あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

STSのMavenビルドでゴールの設定とjarファイル名の指定方法

Spring Boot のプロジェクトで Maven のビルドを実行したら、下記エラーが発生してビルドできませんでした。

INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.582 s
[INFO] Finished at: 2019-07-28T12:24:38+09:00
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "pom.xml" could not be activated because it does not exist.
[ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-clean, clean, post-clean, pre-site, site, post-site, site-deploy. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException

どうも、Mavenのライフサイクルかゴールかを記述しなければいけないみたい。

このゴールというのが曲者で、なにを指定していいのかなかなか分かりませんでした。

今回は、jar ファイルを作成したいのでpackageを指定するのが正解のようです。

Mavenの設定の「ゴール」に「package」を設定してビルドします。

f:id:fnyablog:20190728131108p:plain:w480

警告は出ていますが、うまくいったようですね。

[INFO] Scanning for projects...
[INFO] 
[INFO] --------------------------< com.example:demo >--------------------------
[INFO] Building demo 0.0.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
︙
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  45.865 s
[INFO] Finished at: 2019-07-28T12:51:36+09:00
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "pom.xml" could not be activated because it does not exist.

プロジェクト配下のtargetディレクトリに、demo-0.0.1-SNAPSHOT.jarが作成されていますね。

f:id:fnyablog:20190728131604p:plain:w480

この jar ファイルを実行可能にするには、以下のようにpom.xmlを設定する必要があります。<executable>true</executable>がキモですね。

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
            <executable>true</executable>
        </configuration>
</plugin>

詳しくは、下記記事を参照してください。

qiita.com

また、jar ファイル名をカスタマイズしたい場合もpom.xmlを設定する必要があります。

<artifactId>タグと<version>タグを変更します。下記の設定だと、demo-1.0.0.jarが出来上がります。

とはいえ、バージョン番号はともかくプロジェクト名は変更しない方が安全な気もします。

<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>1.0.0</version>