java - 在maven构建期间执行子模块中的类

标签 java maven sonarqube

我有一个多模块 Maven 项目,我喜欢在构建多模块期间执行 java 类。

Java 类是子模块的一部分,因此我尝试添加 exec-maven-plugin ,但它总是失败并显示 ClassNotFoundException

该部分看起来像

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.4.0</version>
    <executions>
        <execution>
            <id>build-dump</id>
            <phase>process-classes</phase>
            <goals>
                <goal>java</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <includePluginDependencies>true</includePluginDependencies>
        <mainClass>org.sonar.plugins.coffeelint2java.Coffeelint2Java</mainClass>
        <arguments>
            <argument>${rules.path}</argument>
        </arguments>
    </configuration>
</plugin>

这会导致

Caused by: java.lang.NoClassDefFoundError: org/sonar/check/Priority
at org.sonar.plugins.coffeelint2java.CheckTemplateWriter.getPriority(CheckTemplateWriter.java:126)
at org.sonar.plugins.coffeelint2java.CheckTemplateWriter.checkLevelLine(CheckTemplateWriter.java:107)
at org.sonar.plugins.coffeelint2java.CheckTemplateWriter.lambda$generateReplacementMapping$3(CheckTemplateWriter.java:86)
at org.sonar.plugins.coffeelint2java.CheckTemplateWriter$$Lambda$5/161691919.accept(Unknown Source)
at java.util.ArrayList.forEach(ArrayList.java:1249)
at org.sonar.plugins.coffeelint2java.CheckTemplateWriter.generateReplacementMapping(CheckTemplateWriter.java:84)
at org.sonar.plugins.coffeelint2java.CheckTemplateWriter.generate(CheckTemplateWriter.java:52)
at org.sonar.plugins.coffeelint2java.Coffeelint2Java.doGenerateChecks(Coffeelint2Java.java:72)
at org.sonar.plugins.coffeelint2java.Coffeelint2Java.generateChecks(Coffeelint2Java.java:59)
at org.sonar.plugins.coffeelint2java.Coffeelint2Java.lambda$generateChecks$1(Coffeelint2Java.java:51)
at org.sonar.plugins.coffeelint2java.Coffeelint2Java$$Lambda$4/1333998550.accept(Unknown Source)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at org.sonar.plugins.coffeelint2java.Coffeelint2Java.generateChecks(Coffeelint2Java.java:51)
at org.sonar.plugins.coffeelint2java.Coffeelint2Java.main(Coffeelint2Java.java:41)
... 6 more

Sonar 依赖项是在父 pom 中定义的,而且当我将其添加到 <dependency> 时也是如此。子模块 pom 中的部分,它返回相同的结果。

如何正确定义 pom,以在执行主类时包含依赖项?

===更新=== 父pom中的依赖是

    <dependencies>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>19.0</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.sonar</groupId>
        <artifactId>sonar-plugin-api</artifactId>
        <version>5.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.sonarsource.sslr-squid-bridge</groupId>
        <artifactId>sslr-squid-bridge</artifactId>
        <version>2.6.1</version>
    </dependency>
</dependencies>

子模块本身还添加其他依赖项

    <dependencies>
    <dependency>
        <groupId>com.beust</groupId>
        <artifactId>jcommander</artifactId>
        <version>1.48</version>
    </dependency>
</dependencies>

最佳答案

在更新我的问题并向其添加依赖项信息后,我自己就看到了它。

所提供的属性是问题所在。啊啊

删除它解决了问题

关于java - 在maven构建期间执行子模块中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34809054/

相关文章:

java - 在 Maven 构建中传递 Spring 配置文件

java - Vertx 尝试启动嵌入式服务器

SonarQube Lombok Getter 识别

显示素数的 Java 程序

java - 查看return语句中的返回值-java

java - 当 SonarQube 检测到新的违规行为时,是否可以在不使用 Build Breaker 插件的情况下中断 Maven 构建?

java - sonarqube代码分析报告生成时如何触发邮件?

javascript - 如何抑制 SonarQube JavaScript 问题

java - 使用 hashmap 的不可变类示例

java - 如何从给定编号的文件中读取行?