SpringBootプロジェクトをjarパッケージ/ warパッケージ(Mavenに基づく)にパッケージ化するプロセス


SpringBootプロジェクトが開発されたら、それをjarパッケージ/ warパッケージにパッケージ化し、デプロイして実行し、プロジェクト全体のプロセスを完了する必要があります。

1.pomファイル内

<build>
   <finalName>DAG-1.0</finalName>
   <plugins>
       <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-compiler-plugin</artifactId>
           <version>3.8.1</version>
           <configuration>
               <source>11</source>
               <target>11</target>
           </configuration>
       </plugin>

       <plugin>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-maven-plugin</artifactId>
           <executions>
               <execution>
                   <goals>
                       <goal>repackage</goal>
                   </goals>
               </execution>
           </executions>
       </plugin>
   </plugins>

   <resources>
       <resource>
           <directory>src/main/resources</directory>
           <includes>
               <include>**/*.properties</include>
               <include>**/*.xml</include>
               <include>**/*.yml</include>
           </includes>
           <filtering>true</filtering>
       </resource>
       <resource>
           <directory>src/main/java</directory>
           <includes>
               <include>**/*.properties</include>
               <include>**/*.xml</include>
               <include>**/*.yml</include>
           </includes>
           <filtering>true</filtering>
       </resource>
   </resources>
</build>

1.1maven-compiler-plugin

maven-compiler-pluginプロジェクト内のJDKのバージョンと、指定したコンパイルによって生成されたクラスファイルのバージョンを指定できます。私の例では、開発中にソースコードでJDK11を使用するように指定しました。生成されたクラスファイルも、JDK11に対応しています。

1.2spring-boot-maven-plugin

spring-boot-maven-pluginMavenを使用してパッケージ化されたプラグイン。repackageアプリケーションを再パッケージ化します。デフォルトでは、再パッケージ化と実行の2つのMaven目標には、プロジェクトで定義された依存関係が含まれます。

一部の依存関係は、実行可能jarパッケージから除外する必要があります。パッケージの実行中に依存モジュールを除外するには、次の3つの方法があります。

1.2.1特定のMavenモジュールを除外する

特定のMavenモジュールを除外するには、groupIdとartifactIdを独自に組み合わせます。(必要に応じて、分類子を追加して一意に確認できます。)

<build>
    <finalName>DAG-1.0</finalName>
    <plugins>
        ......
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludes>
                    <excludes>
                        <groupId>com.foo</groupId>
                        <artifactId>bar</artifactId>
                    </excludes>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
    ......
</build>

com.fooの下のbarモジュールを除外します。

1.2.2「指定されたartifactId」に一致するすべてのMavenモジュールを除外します

「指定されたartifactId」に一致するすべてのMavenモジュールを除外します。

<build>
    <finalName>DAG-1.0</finalName>
    <plugins>
        ......
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludes>
                    <excludeArtifactIds>my-lib,another-lib</excludeArtifactIds>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
    ......
</build>

除外artifactIdIS my-libanother-libすべてのモジュール、すなわち、すべてのgroupId下位artifactIdのためmy-libanother-libモジュール。

1.2.3「指定されたgroupId」に属するすべてのMavenモジュールを除外します

<build>
    <finalName>DAG-1.0</finalName>
    <plugins>
        ......
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <excludes>
                    <excludeGroupIds>com.foo</excludeGroupIds>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
    ......
</build>

すべてのモジュールgroupIdとして除外さcom.fooます。

2.jarパッケージ名

<finalName>Your jar Package Name</finalName>

ビルドfileNameは、パッケージ化によって生成されたjarパッケージの名前を指定します。

3.Mavenパッケージ

SpringBootプロジェクトのルートディレクトリで次のコマンドを実行します。

mvn package spring-boot:repackage

xxx.jarを含むルートディレクトリにターゲットフォルダを生成できます。

4.jarパッケージを実行します

4.1jarパッケージを実行しているコンソール

java -jar xxx.jar

4.2 jarパッケージをバックグラウンドで実行します。ターミナルを閉じても、jarパッケージの実行には影響しません。

nohup java -jar DAG-1.0.jar > msg.log 2>&1 &

jarパッケージはバックグラウンドで実行され、ログ情報はmsg.logファイルに入力され、エラーログと正しいログはmsg.logに入力されます。
コマンドの最後にアンパサンドを追加すると、プロセスがバックグラウンドで実行されるため、すぐにプロンプ​​ト状態に戻り、次の操作を続行できます。

4.3 jarパッケージをバックグラウンドで実行し、正しいログと間違ったログを別のファイルに入力します

nohup java -jar DAG-1.0.jar >> msg1.log 2>>msg2.log &

正しいログがmsg1.logに入力され、間違ったログがmsg2.logに入力されます。

5.warパッケージをパックして生成します

jarパッケージはデフォルトで生成されます。pomファイルで生成するパッケージの形式を指定します

<packaging>war</packaging>
<name>DAG-1.0</name>
<description>DAG project for Spring Boot</description>

パッケージングコマンドを実行する

mvn package spring-boot:repackage

ここに画像の説明を挿入
warパッケージが生成され、プログラムを実行するためにwarパッケージがデプロイされていることがわかります。

6.発生したエラーと注意事項

6.1 HTMLページにアクセスすると、対応するページが見つかりません

この場合、最初に、生成されたターゲットフォルダーの下に対応するテンプレートフォルダーと、それに含まれるべきxxx.htmlファイルがあるかどうかを確認する必要があります。プログラムの実行中は、ターゲットフォルダ内のもののみを認識します。ターゲットフォルダの下に対応するテンプレートフォルダとxxx.htmlファイルがない場合、HTMLページを開くことは絶対に不可能です。

このエラーの一般的な原因は、パッケージ化するプロジェクトのリソースとしてxxx.htmlが指定されていないことです。これは、pomファイルで指定する必要があります。

<build>
	......
	<resources>
	    <resource>
	        <directory>src/main/resources</directory>
	        <includes>
	            <include>**/*.properties</include>
	            <include>**/*.xml</include>
	            <include>**/*.yml</include>
	            <include>**/*.html</include>
	        </includes>
	        <filtering>true</filtering>
	    </resource>
	    <resource>
	        <directory>src/main/java</directory>
	        <includes>
	            <include>**/*.properties</include>
	            <include>**/*.xml</include>
	            <include>**/*.yml</include>
	        </includes>
	        <filtering>true</filtering>
	    </resource>
	</resources>
<build>

上記のように、src / main / resourcesフォルダーの下に.propertiesファイル、.xmlファイル、.ymlファイル、.htmlファイルを指定し、src / main / javaフォルダーの下に.propertiesファイル、.xmlファイル、.ymlを指定します。プロジェクトのリソースファイルとして使用されるため、生成されたターゲットファイルでhtmlファイルを見つけることができます。

.htmlファイルの表示を削除すると、生成されたターゲットフォルダーに対応するHTMLファイルが見つからず、HTMLページを開くことができません。

<build>
	......
	<resources>
	    <resource>
	        <directory>src/main/resources</directory>
	        <includes>
	            <include>**/*.properties</include>
	            <include>**/*.xml</include>
	            <include>**/*.yml</include>
	        </includes>
	        <filtering>true</filtering>
	    </resource>
	    <resource>
	        <directory>src/main/java</directory>
	        <includes>
	            <include>**/*.properties</include>
	            <include>**/*.xml</include>
	            <include>**/*.yml</include>
	        </includes>
	        <filtering>true</filtering>
	    </resource>
	</resources>
<build>

削除後、生成されたターゲットフォルダにHTMLファイルはありません。

テンプレートフォルダとその中にHTMLファイルがないと、実行中のプログラムはHTMLページにアクセスできません。

6.2 HTMLファイルがターゲットで生成されますが、HTMLページがまだ見つかりません

thymeleaf設定が間違っている可能性があります。

thymeleaf.prefix正しく書く必要がありますが/多かれ少なかれ書くことはできません。/このように、アクセスページを書くと、パスに多かれ少なかれ1つあり/、HTMLページを見つけることができないからです。 。

6.3 pomファイルmaven-compiler-pluginまたはspring-boot-maven-plugin他のプラグインを正しくインポートできない(赤に変わる)

これらのプラグインを依存関係に導入してから、ビルドのプラグインにこれ​​らのプラグインを導入する必要があります。

おすすめ

転載: blog.csdn.net/qq_27198345/article/details/111319290