Mavenで管理しているプロジェクトでLombokを使うための設定方法のメモです。 この記事では
の2つの手順を踏んでいます。 なおIntelliJなどのIDEでLombokを使うためには別途設定が必要になります。
事前条件
javaとmavenがインストールされていること。
% java -version java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode) % mvn --version Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T03:33:14+09:00) Maven home: /usr/local/Cellar/maven/3.5.4/libexec Java version: 1.8.0_162, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home/jre Default locale: ja_JP, platform encoding: UTF-8 OS name: "mac os x", version: "10.13.4", arch: "x86_64", family: "mac
Mavenプロジェクトの作成
% mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 17.743 s [INFO] Finished at: 2018-08-13T15:53:17+09:00 [INFO] ------------------------------------------------------------------------
*Mavenのインストール直後だと時間がかかる。
生成されたファイルは以下の通り。
% tree . └── my-app ├── pom.xml └── src ├── main │ └── java │ └── com │ └── mycompany │ └── app │ └── App.java └── test └── java └── com └── mycompany └── app └── AppTest.java 12 directories, 3 files
Mavenのテンプレートをビルドする
% cd my-app % mvn package [INFO] Scanning for projects... ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.509 s [INFO] Finished at: 2018-08-13T15:59:04+09:00 [INFO] ------------------------------------------------------------------------
コンパイルした実行ファイルの起動
% java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App Hello World!
ここまででMavenプロジェクトの作成は終了です。 続いてlombokの設定を行っていきます。
POM.xmlの編集
% vi pom.xml
下記の依存関係を追加
<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.2</version> <scope>provided</scope> </dependency> </dependencies>
App.java
でlambokのアノテーションを仕様
% cat src/main/java/com/mycompany/app/App.java package com.mycompany.app; import lombok.Data; import lombok.val; @Data class User { private final int id; private final String name; } public class App { public static void main( String[] args ) { val user = new User(1, "Alice"); System.out.println(user); } }
再実行
mvn package % java -cp target/my-app-1.0-SNAPSHOT.jar com.mycompany.app.App User(id=1, name=Alice)