Maven
- Maven
公式
新規プロジェクト作成
旧
mvn -B archetype:generate \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DgroupId=ittimfn.sample \
-DartifactId=sample
※変更していいのは3行目と4行目のみ。1行目と2行目は変えてはいけない。
新
mvn -B archetype:generate \
-DgroupId=ittimfn.sample
-DartifactId=SampleApp
-DarchetypeArtifactId=maven-archetype-quickstart
-DarchetypeVersion=1.4
WebApplicationプロジェクト作成
mvn -B archetype:generate \
-DarchetypeArtifactId=maven-archetype-webapp \
-DgroupId=com.example.log4j2 \
-DartifactId=Log4j2_Web_Application_Sample
参考
https://qiita.com/KevinFQ/items/e8363ad6123713815e68
Javaバージョンを指定する
<properties>
<java.version>1.8</java.version>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>${java.version}</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.mainClass>com.example.Main</project.mainClass>
</properties>
SpringBootの場合
src/main/resources配下のファイルパスを取得する
import java.nio.file.Paths;
Path path =
Paths.get(
Thread.currentThread()
.getContextClassLoader()
.getResource("app.properties") // resources下のファイルパスを指定する。
.getPath()
);
Mavenのresources配下のpropertiesを読み込む
exec:javaコマンドで実行する
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>${project.mainClass}</mainClass>
</configuration>
</plugin>
</plugins>
</build>
引数でmainメソッドのクラスを指定する
exec:java -Dexec.mainClass="<クラス名>"
起動引数を渡す
mvn exec:java -Dexec.mainClass="<クラス名>" -Dexec.args="'<引数1>' '<引数2>' ..."
シングルクオーテーションはなくても動くが、スペースを含む場合は必要。
package, javaコマンドで実行する
# clean compile package
mvn clean compile package
# 実行
java -classpath target/${jarファイルパス} ${mainメソッドクラスフルパス} ${引数}
dependencyタグのjarをまとめてjarにする
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>${project.mainClass}</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
参考
https://qiita.com/hide/items/0c8795054219d04e5e98
package,install時にテストをスキップする
# 実行のみスキップ
mvn install -DskipTests=true
# コンパイルをスキップ
mvn install -Dmaven.test.skip=true
getter,setterを作成しない
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency>
参考
https://qiita.com/opengl-8080/items/671ffd4bf84fe5e32557
https://mvnrepository.com/artifact/org.projectlombok/lombok
依存ライブラリを取り込む
mvn dependency:copy-dependencies
jarをローカルリポジトリに登録する
jar_path=
groupId=
artifactId=
version=
mvn install:install-file \
-Dfile=${jar_path} \
-DgroupId=${groupId} \
-DartifactId=${artifactId} \
-Dversion=${version} \
-Dpackaging=jar \
-DgeneratePom=true
依存するライブラリを除去する
含まれているライブラリのバージョンが合わないので除去したいときに使う。
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>selenide</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
</exclusion>
</exclusions>
</dependency>