2015-02-04 6 views
7

Sto cercando di utilizzare Lombok con Maven e VRaptor su IntelliJ ma non funziona.Lombok e Maven

Ho già letto alcune informazioni in StackOverflow ma nessuno ha risolto il mio problema, ho già abilitato l'Annotation Processor in Intellij ma ancora niente.

Ho provato a compilarlo anche da riga di comando (Windows) e non ha funzionato.

Ho anche provato a creare un altro progetto senza Maven e aggiungere la libreria, creare alcune classi per test e funziona, compilare ed eseguire perfettamente.

Qualsiasi aiuto?

Il progetto ha solo 2 classe, 1 soggetto e 1 regolatore

Ecco il mio 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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>razor</groupId> 
<artifactId>controle-de-ponto</artifactId> 
<version>0.0.1</version> 
<packaging>war</packaging> 

<description>Um sistema de controlo de ponto</description> 

<repositories> 
    <repository> 
     <id>projectlombok.org</id> 
     <url>http://projectlombok.org/mavenrepo</url> 
    </repository> 
</repositories> 

<properties> 
    <project.build.sourceEncoding>ISO-8859-1</project.build.sourceEncoding> 
    <weld.version>2.1.2.Final</weld.version> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>br.com.caelum</groupId> 
     <artifactId>vraptor</artifactId> 
     <version>4.1.4</version> 
    </dependency> 

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

    <dependency> 
     <groupId>org.jboss.weld.servlet</groupId> 
     <artifactId>weld-servlet-core</artifactId> 
     <version>2.1.2.Final</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.jboss.weld</groupId> 
     <artifactId>weld-core-impl</artifactId> 
     <version>2.1.2.Final</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>javax.el</groupId> 
     <artifactId>el-api</artifactId> 
     <version>2.2</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-validator-cdi</artifactId> 
     <version>5.1.1.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.inject</groupId> 
     <artifactId>javax.inject</artifactId> 
     <version>1</version> 
     <!-- uncomment this line on app servers --> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.velocity</groupId> 
     <artifactId>velocity</artifactId> 
     <version>1.7</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.velocity</groupId> 
     <artifactId>velocity-tools</artifactId> 
     <version>2.0</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.8.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.34</version> 
     <scope>runtime</scope> 
    </dependency> 

    <dependency> 
     <groupId>br.com.caelum.vraptor</groupId> 
     <artifactId>vraptor-jpa</artifactId> 
     <version>4.0.2</version> 
    </dependency> 

    <dependency> 
     <groupId>br.com.caelum.vraptor</groupId> 
     <artifactId>vraptor-java8</artifactId> 
     <version>4.0.0.Final</version> 
    </dependency> 
</dependencies> 

<build> 
    <finalName>controle-de-ponto</finalName> 
    <!--<outputDirectory>/Users/turini/Documents/workspace/vraptor4/vraptor-blank-project/src/main/webapp/WEB-INF/classes</outputDirectory>--> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <compilerVersion>1.8</compilerVersion> 
       <source>1.8</source> 
       <target>1.8</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

errore quando provo a compilare:

[INFO] ------------------------------------------------------------------------ 
[INFO] Building controle-de-ponto 0.0.1 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ controle-de-ponto --- 
[INFO] Using 'ISO-8859-1' encoding to copy filtered resources. 
[INFO] Copying 3 resources 
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ controle-de-ponto --- 
[INFO] Changes detected - recompiling the module! 
[INFO] Compiling 2 source files to C:\Users\Kennedy\Desktop\controle-de-ponto\target\classes 
[INFO] ------------------------------------------------------------- 
[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /C:/Users/Kennedy/Desktop/controle-de-ponto/src/main/java/br/com/caelum/vraptor/controller/IndexController.java:[37,16] cannot find symbol 
    symbol: method setNome(java.lang.String) 
    location: variable usuario of type org.razor.cponto.beans.Usuario 
[INFO] 1 error 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 1.167 s 
[INFO] Finished at: 2015-02-04T13:41:01-02:00 
[INFO] Final Memory: 17M/204M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project controle-de-ponto: Compilation failure 
[ERROR] /C:/Users/Kennedy/Desktop/controle-de-ponto/src/main/java/br/com/caelum/vraptor/controller/IndexController.java:[37,16] cannot find symbol 
[ERROR] symbol: method setNome(java.lang.String) 
[ERROR] location: variable usuario of type org.razor.cponto.beans.Usuario 
[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 
+1

Potrebbe essere più specifico di "non ha funzionato"? Qual è stato l'errore? – StephaneM

+0

Ho modificato la mia domanda con maggiori informazioni. –

+0

la classe Usuario ha l'annotazione @Data. E setNome è generato da esso. –

risposta

4

Questo dovrebbe funzionare così com'è e non ha nulla a che fare con l'idea di IntelliJ. Ma lo farei:

  • assicurarsi l'annotazione @Data è Lombok uno
  • rimuovere la definizione repository (Maven centrale va bene)
  • utilizzare una versione Lombok recente (1.16.0partire da questa scrittura)
  • ricostruire (mvn clean package)

penso che il vaso Lombok non viene trovato da Maven nel vostro caso o tha t potresti avere un altro @Data.

+0

Thx! Sembra che fosse la versione, non ho visto che stavo usando una vecchia versione. Vergogna su di me haha. –

+0

È più probabile che si tratti del repository: sfoglia http://projectlombok.org/mavenrepo/ e vedrai che non assomiglia a un repository di computer. –

+0

mvn clean package e quindi rimuovendo il vecchio file war. Sostituendo con uno nuovo. E poi dopo la distribuzione. Bazinga: D +1 – Nabin

-1

dovete aggiungere plugin di Lombok:

<build> 
    <plugins> 
    <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> 
    </plugins> 
</build> 
+0

no, questo è per la sostituzione delle annotazioni di Lombok con il codice sorgente equivalente – aliopi

13

Questo potrebbe funzionare

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.6.0</version> 
      <configuration> 
       <source>1.8</source> 
       <target>1.8</target> 
       <annotationProcessorPaths> 
        <path> 
         <groupId>org.projectlombok</groupId> 
         <artifactId>lombok</artifactId> 
         <version>1.16.12</version> 
        </path>       
       </annotationProcessorPaths> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+1

Grazie, mi ci sono voluti ore e la soluzione è stata riparata. Lavorare con 'maven-compiler-plugin'' 3.6.2' e 'lombok'' 1.16.16' – tehCivilian