Open7
Javaことはじめ
Javaで開発したい。
Archlinuxの場合、 archlinux-java でグローバルで使用するJavaを切り替えることができる。
が、それをするとOSレベルでJavaが切り替わってしまいそう(要調査)なので、いつもの通り*envを使う。
Javaの場合は、jenvを使う。
jenvにJavaをインストールする機能がないので、Java自体はpacmanでインストールする。
これを見て、パッケージ名を調べてインストールする。
もろもろ終わると、以下のようになる。
$ jenv versions
system
11
11.0
11.0.22
17
17.0
17.0.10
20
20.0
20.0.2
21
21.0
21.0.2
graalvm64-20.0.2 (set by /home/conao/.anyenv/envs/jenv/version)
openjdk64-11.0.22
openjdk64-17.0.10
* openjdk64-21.0.2
グローバルでJava21を使うように設定する。
$ jenv global openjdk64-21.0.2
$ java -version
openjdk version "21.0.2" 2024-01-16
OpenJDK Runtime Environment (build 21.0.2+13)
OpenJDK 64-Bit Server VM (build 21.0.2+13, mixed mode, sharing)
できた。
パッケージマネージャは一旦mavenを使う。
$ mvn -version
Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Maven home: /opt/maven
Java version: 21.0.2, vendor: N/A, runtime: /usr/lib/jvm/java-21-openjdk
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.10.211-1-manjaro", arch: "amd64", family: "unix"
archetype:generateでプロジェクトを作成する。
$ mvn archetype:generate
プロンプトは以下で答える。
groupId: com.conao3
artifactId: java-maven-hello
生成されたツリーは以下。
$ tree
.
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── conao3
│ └── App.java
└── test
└── java
└── com
└── conao3
└── AppTest.java
10 directories, 3 files
compile
$ mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.379 s
[INFO] Finished at: 2024-03-21T23:50:18+09:00
[INFO] ------------------------------------------------------------------------
test
$ mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ java-maven-hello ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 1 source file to /home/conao/dev/tmp/git/java-maven-hello/target/test-classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Source option 7 is no longer supported. Use 8 or later.
[ERROR] Target option 7 is no longer supported. Use 8 or later.
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.558 s
[INFO] Finished at: 2024-03-21T23:50:57+09:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:testCompile (default-testCompile) on project java-maven-hello: Compilation failure: Compilation failure:
[ERROR] Source option 7 is no longer supported. Use 8 or later.
[ERROR] Target option 7 is no longer supported. Use 8 or later.
[ERROR] -> [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/MojoFailureException
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
$ mvn test
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ java-maven-hello ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.conao3.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.015 s - in com.conao3.AppTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.248 s
[INFO] Finished at: 2024-03-21T23:51:50+09:00
[INFO] ------------------------------------------------------------------------
package
$ mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:3.0.2:testResources (default-testResources) @ java-maven-hello ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/conao/dev/tmp/git/java-maven-hello/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.8.0:testCompile (default-testCompile) @ java-maven-hello ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.22.1:test (default-test) @ java-maven-hello ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running com.conao3.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.02 s - in com.conao3.AppTest
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ java-maven-hello ---
[INFO] Building jar: /home/conao/dev/tmp/git/java-maven-hello/target/java-maven-hello-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.194 s
[INFO] Finished at: 2024-03-21T23:53:27+09:00
[INFO] ------------------------------------------------------------------------
$ tree -L 3
.
├── pom.xml
├── src
│ ├── main
│ │ └── java
│ └── test
│ └── java
└── target
├── classes
│ └── com
├── generated-sources
│ └── annotations
├── generated-test-sources
│ └── test-annotations
├── java-maven-hello-1.0-SNAPSHOT.jar
├── maven-archiver
│ └── pom.properties
├── maven-status
│ └── maven-compiler-plugin
├── surefire-reports
│ ├── com.conao3.AppTest.txt
│ └── TEST-com.conao3.AppTest.xml
└── test-classes
└── com
19 directories, 5 files
clean
$ mvn clean
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< com.conao3:java-maven-hello >---------------------
[INFO] Building java-maven-hello 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:3.1.0:clean (default-clean) @ java-maven-hello ---
[INFO] Deleting /home/conao/dev/tmp/git/java-maven-hello/target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.171 s
[INFO] Finished at: 2024-03-21T23:54:48+09:00
[INFO] ------------------------------------------------------------------------
$ tree
.
├── pom.xml
└── src
├── main
│ └── java
│ └── com
│ └── conao3
│ └── App.java
└── test
└── java
└── com
└── conao3
└── AppTest.java
10 directories, 3 files