問題SpringBootマルチモジュールのリリースの99%を解決しますか?8つの原則と4つの問題をリリースしSpringBootソリューション
あなたはマルチモジュールプロジェクトSpringBootを使用している場合は、発行時点でさまざまな問題が発生する可能性があります。この記事では、これらの原則およびソリューションは、ほぼ圧倒的な数SpringBootポスト疑問を解決することができますマスターし、多くの場合、表示され、4つの問題を公開する以下の8つの原則で解決策をまとめました。
SpringBootマルチモジュールは、8つの主要な原則をリリース
Publishingモジュールのパッケージではなく、親モジュールパッケージの1
たとえば、次のプロジェクトディレクトリ:
あなたが直接そのAPIモジュールパッケージでそれを公開したい場合は、よりむしろ親モジュールにパッケージ化。
包装タイプのjar形式に公開呼び出しモジュール2、
このようなモデルとのpom.xmlに配置されたジャーに共通のパッケージ形式を設定する必要があるなどの一般的なモジュール:
<packaging>jar</packaging>
3は、モジュールの実装方式の規格争いを解放するために設定されています
pom.xmlにリリースモジュールで設定します。
<packaging>war</packaging>
4内蔵のTomcatを除外
pom.xmlにリリースモジュールで設定します。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
スコープ=提供を設定する場合、このjarパッケージには、組み込みのTomcatを除外パブリケーションのアーティクルに表示されません。
5起動クラスを設定します。
このステップでは、開始ようにTomcatを伝える入り口に対応しています。次のコードの起動クラスを追加する必要があります。
@SpringBootApplication
public class ApiApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(ApiApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
6つのを使用している場合インターセプタは、静的ファイルを除外する必要があります
たとえば、次のように私はこのプロジェクトで闊歩を使用し、その後、私は、静的ファイルの闊歩を除外するために必要な、コードは次のとおりです。
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
// 排除静态文件
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
// do something
}
図7は、第1の共通のモジュールをロードし、プロジェクトを公開しています
プロジェクトのモジュールが参照する他の公共のモジュールのリリースは、このプロジェクトの最初のモジュールへの公共の必要性は、ローカルリポジトリにロードされた場合。
操作、以下に示すように、プロジェクトのパッケージを完了するために、戦争のパッケージ生成モジュールパッケージを公開し、正常にインストールした後、[インストール]をクリックして親モジュールをダブルクリックします。
8展開プロジェクト
戦争のパッケージの後で、パッケージには、以下に示すように、Tomcatを再起動するには、Tomcatのwebappsディレクトリに、ただ一つの戦争が必要です。
以下に示すように項目の通常の動作は、ディレクトリのwebappsフォルダに同じ名前を生成します。
完成以上配置,就可以 happy 的访问自己发布的项目了。
可能出现的问题和解决方案
问题一:SpringBoot 配置了端口号影不影响程序发布?
答:不影响,配置的 server.port 会被覆盖,以 tomcat 本身的端口号为准,tomcat 端口号在 tomcat/config/server.xml 文件中配置。
问题二:发布报错,不能找到其他模块或项目中的公共模块,怎么办?
答:因为没有执行父节点 maven 的 install 操作,install 就是把公共模块放入本地仓库,提供给其它项目使用。
问题三:不能找到 SpringBoot 运行的 main 类,怎么办?
答:因为没有设置启动类导致的,设置方式:
- pom.xml 配置启动类,配置 configuration><mainClass>com.bi.api.ApiApplication</mainClass></configuration> 。
- 启动类继承 SpringBootServletInitializer 实现 SpringApplicationBuilder 方法,具体代码参考文中第五部分。
- 问题四:把 SpringBoot 项目部署到 Tomcat 7 一直提示找不到 xxx.jar 包?
- 答:这是因为 SpringBoot 版本太高,tomcat 版本太低的原因。如果你使用的是最新版的 SpringBoot,可以考虑把 tomcat 也升级为 tomcat 8.x+ 最新的版本,就可以解决这个问题。