Android開発以外でJava使うことがない人間のMavenメモ。SPI開発が目的。
プロジェクト生成
mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false \
-DgroupId=com.hoge \
-DartifactId=Hello
どのようなオプションが標準化もよくわからない。
実行
こうすると動くらしいが、
cd Hello
mvn -q compile exec:java -Dexec.mainClass=com.hoge.App
エラー。
エラー対応
文字コードやターゲット環境などの設定が必要らしい(オプションで設定できないの?)。
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hoge</groupId>
<artifactId>Hello</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Hello</name>
<url>http://maven.apache.org</url>
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <maven.compiler.source>1.8</maven.compiler.source>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ </properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
手動で加えなくても-DarchetypeVersion=RELEASE \ を加えるとpropertiesが自動生成されるみたい。
再実行
mvn -q compile exec:java -Dexec.mainClass=com.hoge.App
Hello World!
jar生成
mvn install
jar中身確認
jar -tf Hello-1.0-SNAPSHOT.jar
META-INF/
META-INF/MANIFEST.MF
com/
com/hoge/
com/hoge/App.class
META-INF/maven/
META-INF/maven/com.hoge/
META-INF/maven/com.hoge/Hello/
META-INF/maven/com.hoge/Hello/pom.xml
META-INF/maven/com.hoge/Hello/pom.properties
追記
とりあえず下記でテンプレートを作成すればいいのかな?
mvn archetype:generate \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=RELEASE \
-DinteractiveMode=false \
-DgroupId=com.hoge \
-DartifactId=Hello
なんかよくわからんけど、とりあえず。