如何在pom.xml

时间:2016-04-19 11:50:04

标签: java xml maven configuration dependencies

我想从命令行使用mvn dependency:analyze来手动检查依赖项问题。问题是我找不到在pom.xml中配置行为的方法。必须在命令行中提供所有参数。

所以我必须始终使用

mvn dependency:analyze -DignoreNonCompile

我缺少的是在插件配置中设置ignoreNonCompilepom.xml的方法。

这样的事情:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>analyze</id>
            <goals>
                <goal>analyze</goal>
            </goals>
            <configuration>
                <ignoreNonCompile>true</ignoreNonCompile>
            </configuration>
        </execution>
    </executions>
</plugin>

但这不起作用。

如果我使用

<goal>analyze-only</goal>

然后在构建期间运行插件,并使用配置。但我不想让它在构建中运行,只需手动请求。手动运行不会遵循参数。

我可以在名为pom.xml的{​​{1}}中设置属性,但这会在构建中设置此参数并手动运行。

有没有办法只配置ignoreNonCompile的行为?

1 个答案:

答案 0 :(得分:2)

问题是您在<execution>块内设置了配置。这意味着配置将仅绑定到该特定执行;但是,在命令行mvn dependency:analyze上调用时,它不会调用该执行。相反,它将使用默认的全局配置调用默认执行插件。

ignoreNonCompile是该插件的有效配置元素。你必须使用

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <configuration>
        <ignoreNonCompile>true</ignoreNonCompile>
    </configuration>
</plugin>

如果您不想为上述所有执行定义全局配置,您可以保留特定于执行的配置,但是您需要告诉Maven to explicitely run that execution

mvn dependency:analyze@analyze

其中analyze是执行ID:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>analyze</id>  <!-- execution id used in Maven command -->
            <goals>
                <goal>analyze</goal>
            </goals>
            <configuration>
                <ignoreNonCompile>true</ignoreNonCompile>
            </configuration>
        </execution>
    </executions>
</plugin>