序文
スプリングブートプロジェクトは通常、埋め込まれたTomcatまたはJettyサーバーで実行され、外部サービスコンテナに展開するために戦争パッケージを使用することはほとんどありません。 Linuxに配置されたとしても、通常、アプリケーションクラスを直接開始します。ただし、外部サーバーに展開する必要がある場合があります。これは、Spring Bootでは少し面倒です。
以下ではあまり言いません。詳細な紹介を一緒に見てみましょう。
環境声明:
JDK:1.8
サーバー:Alibaba Cloud、Ubuntu 16.04
スプリングブート:1.5.9.Release
目的
リモートサーバー上のTomcatにスプリングブートをパッケージします。
pom.xml
<?xml version = "1.0" encoding = "utf-8"?> <project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance <http://www.w3.org/2001 xsi:schemalocation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/xsd/maven-4.0.0.sdsd"> <modelversion> 4.0.0 </modelversion> <グループ<バージョン> 1.0-snapshot </version> <packaging> war </packaging> <parent> <parent> org.springframework.boot </groupid> <artifactid> artifactid> <バージョン> 1.5.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9.9. <Dependencies> <Dependency> <groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-web </artifactid> </dependency> <! - コンパイルサポートへの変更 - > <依存関係> <依存関係> <グループ<artifactid> spring-boot-starter-tomcat </artifactid> <scope>提供<Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-thymeleaf </artifactid> </dependency> <! - 依存関係を必要とする - > <依存関係> <gripid> <artifactid> nekohtml </artifactid> <バージョン> 1.9.22 </version> </dependency> <seplency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-starter-jdbc </artifactid> </dependency> <sepency> <sionfency> <diestency> <shipency <Artifactid> mybatis-spring-boot-starter </artifactid> <version> 1.3.1 </version> </dependency> <dependency> <groupid> org.springframework.boot </groupid> <artifactid> spring-boot-startertest </depatid> </depancy> </scope> </depancy> <GroupId> mysql </groupid> <artifactid> mysql-connector-java </artifactid> <version> 6.0.6 </version> </dependency> <! - alibaba接続プール - > <依存> <依存関係> com.alibaba </groupid> <artifactid> fastjson-> <dependency> <groupid> com.alibaba </groupid> <artifactid> fastjson </artifactid> <version> 1.2.40 </version> </dependency> <! - hot deplyment-> <deptency> org.springframework.boot < <バージョン> 1.5.9.Release </version> <optional> true </optional> <scope> true </scope> </dependency> </dependencies> <burtion>/testweb>/testweb </finalName> <plugins> <plugin> <groupid> org.apache.maven.plugins < <バージョン> 2.4 </version> <configuration> <failOnmissingwebxml> false </failOnmissingwebxml> </configuration> </plugin> </plugins> </build> </project>
知らせ
1. Mavenプラグインは、スプリングブートに付属のプラグインを使用できません。このプラグインを使用して、次のエラーを報告しました
目標org.apache.maven.plugins:maven-jar-plugin:2.6:jar(default-jar)プロジェクトプロジェクト:Goal org.apache.maven.plugin:maven-jar-plugin:maven-jar-plugin:2.6:jarが失敗したときに、jarが失敗しました。 org.apache.maven.plugins:maven-jar-plugin:2.6:jar:java.lang.exceptioninitializererror:null
Mavenプラグインをに変更します
<プラグイン> <groupid> org.apache.maven.plugins </groupid> <artifactid> maven-war-plugin </artifactid> <バージョン> 2.4 </version> <configuration> <faile> <faile> <faile> <faile> fail </failonmissingwebxml>
web.xmlを持っていないために注意すべきです。さらに追加してください
<configuration> <failOnmissingwebxml> false </failOnmissingwebxml> </configuration>
2。
<build> <finalName> xxx </finalName> </build>
finalNameは、application.ymlのコンテキストパスと一致する必要があります。
3. Tomcatの依存関係を変更して時間をコンパイルする必要があります
<Dependency> groupId> org.springframework.boot </groupid> <artifactid> spring-boot-starter-tomcat </artifactid> <scope>
4.スプリングブートエントリクラス、SpringBootservletInitializerを継承し、上書きします
Protected SpringApplicationBuilder Configure(SpringApplicationBuilderアプリケーション){return application.Sources(mainApplication.class); }MainApplication.classは、スプリングブートのエントリクラスです。
パック
プロジェクトのルートディレクトリに移動します。アイデアを使用している場合は、ここに直接入力してください。
MVNクリーンパッケージ-dskiptests
パッケージング後、プロジェクトのターゲットフォルダーで対応する.WARファイルが生成されます。
アップロード
TomcatのWebAppsの下に戦争ファイルを投げるだけです。
未解決の問題:
私はもともとそれを瓶のパッケージにしたかったのです。次に、スプリングブートを直接起動します。 Wu NaiはJARパッケージになり、Mavenプラグインのエラーを報告し続けました。戦争パッケージにのみ入力し、Tomcatにアップロードできます。
誰かがこの問題を解決した場合は、私に知らせてください。
この記事では、これはバグだと言われています...
https://issues.apache.org/jira/browse/msite-724
更新します。 。 。 。
問題は解決されました。スプリングブートを直接jarにパッケージ化して実行できます。
理由:
<プラグイン> <プラグイン> <groupId> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> </plugins>
Springbootで与えられた公式の例は、このプラグインを使用することです。
Mavenは、Maven-Jar-Pluginバージョン2.4および2.6バージョンを自動的にダウンロードします。
ただし、Mavenはデフォルトでバージョン2.6に依存します。 。 Maven-Jar-Plugin 2.6jarが互換性がないという最初のプロジェクトで報告されたエラーに気付きませんでした。これにより、エラーが見つかりませんでした。 。
つまり、バージョン2.6は互換性がありません。手動でバージョン2.4に変更してください。以下に示すように:
<プラグイン> <プラグイン><groupId> org.springframework.boot </groupid> <artifactid> spring-boot-maven-plugin </artifactid> </plugin> <plugin> <groupid> org.apache.maven.plugins </groupid> <artifactid> maven-jar-plugin> </プラグイン> </プラグイン>
要約します
上記は、この記事のコンテンツ全体です。この記事の内容には、すべての人の研究や仕事に特定の参照値があることを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。 wulin.comへのご支援ありがとうございます。