2016-06-27 6 views
0

I持って次ののプラグインとの依存関係春ブートアプリケーションロンボクは、ばねブートのmaven-pluginのでは動作しません

<!--...--> 
<dependency> 
    <groupId>org.springframework.security.oauth</groupId> 
    <artifactId>spring-security-oauth2</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
</dependency> 


    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>1.16.8</version> 
     <scope>provided</scope> 
    </dependency> 

<!--...--> 

<build> 
     <finalName>service-api</finalName> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>attached</goal> 
         </goals> 
         <configuration> 
          <descriptors> 
           <descriptor>service-api.xml</descriptor> 
          </descriptors> 
          <appendAssemblyId>false</appendAssemblyId> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>com.alexecollins.docker</groupId> 
       <artifactId>docker-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

そしてテストロンボクのテキスト2クラス私のアプリで:

import lombok.Data; 

@Data 
public class TestDto { 

    private String testStr; 
} 

そして

public class TestCall { 

     public void testLombok() { 
      TestDto dto = new TestDto(); 

      dto.setTestStr("My Test String."); 

      System.out.println(dto); 
     } 

    } 
だから、

、私は春ブートを実行します:プラグインから実行、あるいはシンプルなコマンドMVNをコンパイルし、私は次のエラーがあります:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project service-api: Compilation failure: Compilation failure: [ERROR] D:\Projects\??????\service-api\src\main\java\TestCall.java:[7,-1] [ERROR] 1. ERROR in D:\Projects\???????\service-api\src\main\java\TestCall.java (at line 7) [ERROR] dto.setTestStr("My Test String."); [ERROR] ^^^^^^^^^^ [ERROR] The method setTestStr(String) is undefined for the type TestDto [ERROR] ---------- [ERROR] 1 problem (1 error) [ERROR] [ERROR] Found 1 error and 0 warnings.

ロンボク機能はないようですsptingプラグインで作業してください。 ただし、標準maven-compiler-plugin(バージョン3.5.1)を使用している場合、すべて正常に動作しています。しかし今のところは、スプリングブートの組み込みコンテナを使用したいので、ビルドのワークフローを変更する準備ができていません。 この問題で何かできるのですか?私はいくつかの特別な依存関係やそのようなものを含めるべきでしょうか?

+3

は、http://start.spring.ioを介してフレッシュブート(web + lombok)mavenプロジェクトを生成し、単純なlombokデータクラスをそれに入れても問題ありません。 https://gist.github.com/zapl/1d238b278b8cc68e330e4bf1048943a8は、生成されたpom(手つかずの)とjavaソース(データクラスを追加したもの)で、 'spring-boot:run'は期待通りに" hello "を出力します。 – zapl

+1

問題は、groovy-eclipse-compilerプラグインを持つ親pomがあることです。そこで、このトピックでlombokの設定方法を見つけました:http://stackoverflow.com/questions/8524891/maven-groovy-and-java-lombok – eGoLai

答えて

1

問題は、次のプラグインが含まれている親のポンポンにあった:Maven Groovy and Java + Lombok

、今の私のグルーヴィー・日食コンパイラプラグインは次のとおりです:だから

<pluginManagement> 
      <plugins> 
       <plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <configuration> 
         <compilerId>groovy-eclipse-compiler</compilerId> 
        </configuration> 
        <dependencies> 
         <dependency> 
          <groupId>org.codehaus.groovy</groupId> 
          <artifactId>groovy-eclipse-compiler</artifactId> 
          <version>2.9.2-01</version> 
         </dependency> 
         <dependency> 
          <groupId>org.codehaus.groovy</groupId> 
          <artifactId>groovy-eclipse-batch</artifactId> 
          <version>2.4.3-01</version> 
         </dependency> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </pluginManagement> 

を、私はここで解決策を見つけた

<pluginManagement> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <compilerId>groovy-eclipse-compiler</compilerId> 
        <verbose>true</verbose> 
        <fork>true</fork> 
        <compilerArguments> 
         <javaAgentClass>lombok.launch.Agent</javaAgentClass> 
        </compilerArguments> 
       </configuration> 
       <dependencies> 
        <dependency> 
         <groupId>org.codehaus.groovy</groupId> 
         <artifactId>groovy-eclipse-compiler</artifactId> 
         <version>2.9.2-01</version> 
        </dependency> 
        <dependency> 
         <groupId>org.codehaus.groovy</groupId> 
         <artifactId>groovy-eclipse-batch</artifactId> 
         <version>2.4.3-01</version> 
        </dependency> 
        <dependency> 
         <groupId>org.projectlombok</groupId> 
         <artifactId>lombok</artifactId> 
         <version>1.16.8</version> 
        </dependency> 
       </dependencies> 
      </plugin> 
     </plugins> 
    </pluginManagement> 
0

ロンボクは定型コードを生成するので、これを行う必要はありません。この世代を初期化する手段が必要です。あなたのIDEの場合、それを行うプラグインがあります。詳細については

<plugin> 
    <groupId>org.projectlombok</groupId> 
    <artifactId>lombok-maven-plugin</artifactId> 
    <version>1.16.8.0</version> 
    <executions> 
    <execution> 
     <phase>generate-sources</phase> 
     <goals> 
     <goal>delombok</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

documentation of the pluginを確認してください。ただしMavenのためにあなたは、関連するコードは(ビルドセクション内)に生成されるべきであるとMavenを伝えるビルドステップを必要と構築。

+1

JSR 269をサポートするコンパイラを使用する場合は、プラグインは必要ありませんプラグ可能な注釈処理API。どちらが標準的なロンボク使用方法。 – Magnus

+0

拡張ソースの生成に必要なこのプラグインです。 中間生成されたソースを追加するのは悪い考えです。 公式のウェブサイトでは、プロジェクトをコンパイルする際に、クラスパスでlomok libを用意するだけでいいです:https://projectlombok.org/mavenrepo/index.html – eGoLai

関連する問題