2011-06-20 155 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