2011-06-20 195 views
4

在我的POM我有這種依賴性Maven exec插件不能依賴提供的依賴性嗎?

<dependencies> 
    <dependency> 
     <groupId>org.projectlombok</groupId> 
     <artifactId>lombok</artifactId> 
     <version>0.10.0-RC1</version> 
     <scope>provided</scope> 
    </dependency> 
</dependencies> 

現在我想用這個在Maven Exec插件這樣的:

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>exec-maven-plugin</artifactId> 
      <version>1.2</version> 
      <executions> 
       <execution> 
        <id>delombok-source</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>exec</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <executable>java</executable> 
       <arguments> 
        <argument>-classpath</argument> 
        <classpath> 
         <dependency>org.projectlombok:lombok</dependency> 
        </classpath> 
        <argument>lombok.core.Main</argument> 
        <argument>delombok</argument> 
        <argument>src/main/java</argument> 
        <argument>-d</argument> 
        <argument>target/src-delomboked</argument> 
       </arguments> 
      </configuration> 
     </plugin> 

但每次我執行exec:exec時間,我得到一個「 java.lang.NoClassDefFoundError:lombok/core/Main「錯誤。一些測試表明,這是因爲在所提供的範圍內聲明瞭依賴關係

爲什麼exec插件不能使用提供的依賴關係?其次,有沒有辦法讓exec插件使用該依賴關係而不更改依賴範圍?

回答

6

後來發現了答案:簡單地添加到您的配置

<classpathScope>compile</classpathScope> 

事後看來,這是有道理的龍目島是一個編譯時註釋處理器,而不是一個運行時依賴。

1

您可能對lombok-maven-plugin感興趣,而不是嘗試使用exec-maven-plugin。

+0

這個問題問得在lombok-maven-plugin更新至0.10.0之前詢問。請參閱https://github.com/awhitford/lombok.maven/issues/2 – TheLQ

2

萬一有人不知道如何做到這一點,而無需修改POM,可以將下面的選項添加到您的命令:-Dexec.classpathScope="compile"

舉例來說,我使用的:

mvn compile exec:java -Dexec.mainClass="my.package.MyMainClass" -Dexec.classpathScope="compile" 
+0

如果您還需要運行時依賴關係,則這不會解決問題。我希望exec插件提供的是一個更靈活的範圍聲明,例如'provided + runtime' – wytten

+0

我希望獲得相同的功能,所以我添加了它。 http://jira.codehaus.org/browse/MEXEC-124。不幸的是他們還沒有接受。 – jgibson

+0

@jgibson由於Codehaus關閉,我在他們的新Github repo上爲您的JIRA做了替換問題:https://github.com/mojohaus/exec-maven-plugin/issues/60 – Shannon