Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven exec插件可以';你不依赖提供的依赖性吗?_Java_Maven - Fatal编程技术网

Java Maven exec插件可以';你不依赖提供的依赖性吗?

Java Maven exec插件可以';你不依赖提供的依赖性吗?,java,maven,Java,Maven,在我的POM中,我有这种依赖性 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>0.10.0-RC1</version> <scope>provided&l

在我的POM中,我有这种依赖性

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

org.projectlombok
龙目
0.10.0-RC1
假如
现在,我尝试在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>

org.codehaus.mojo
execmaven插件
1.2
德隆波克光源
生成源
执行官
JAVA
-类路径
org.projectlombok:lombok
龙目山
德隆博克
src/main/java
-d
目标/src去目标
但是每次执行
exec:exec
,我都会得到一个“java.lang.NoClassDefFoundError:lombok/core/Main”错误。一些测试表明,这是因为依赖关系是在提供的范围内声明的


为什么exec插件不能使用提供的依赖项?第二,exec插件有没有办法在不改变依赖范围的情况下使用该依赖关系

稍后找到答案:只需将其添加到配置中即可

<classpathScope>compile</classpathScope>
编译

事后看来,这是有道理的,因为lombok是一个编译时注释处理器,而不是运行时依赖项

您可能对感兴趣,而不是尝试使用exec maven插件。

如果有人想知道如何在不修改pom的情况下执行此操作,您可以向命令中添加以下选项:
-Dexec.classpathScope=“compile”

例如,我正在使用:

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

这个问题是在lombok maven插件升级到0.10.0之前提出的。如果您还需要运行时依赖项,那么这将无法解决问题。我希望exec插件提供的是一个更灵活的范围声明,如“提供+运行时”,我希望有相同的功能,所以我添加了它。不幸的是,他们还没有接受。@jgibson我在他们新的Github回购协议中为您的JIRA发行了一个替代品,因为Codehaus已经关闭: