0

我有一个使用buildnumber-maven-plugin. 如果我运行,mvn validate我会看到它正在工作:

[INFO] --- buildnumber-maven-plugin:1.3:create (default) @ myproject ---
[INFO] Executing: /bin/sh -c cd /Users/rob/Workspace/myproject && git rev-parse --verify HEAD
[INFO] Storing buildNumber: 5d315d8d1a43c3289fbf114c379fa1a3d3787044 at timestamp: 1477059166424

但是,如果我运行mvn resources:resources过滤后的文件并不会拾取它:

[INFO] --- maven-resources-plugin:2.6:resources (default-cli) @ myproject ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource

pom.xml

<build>
    ...
    <resources>         
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>version.txt</include>
            </includes>
        </resource>

version.txt拥有:

${buildNumber}

但是在maven运行之后,没有过滤:

> cat target/classes/version.txt
${buildNumber}

内部版本号配置pom.xml

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.3</version>
    <executions>
        <execution>
            <phase>validate</phase>
            <goals><goal>create</goal></goals>
        </execution>

我对马文的了解还不够。运行资源“目标”不应该也获得buildNumber财产吗?

4

1 回答 1

1

您执行的命令有所不同:

mvn validate执行 maven 阶段“valdate”:表示之前的所有阶段(在本例中为无)

mvn resources:resources是在资源插件上执行目标“资源”的快捷方式。实际上它是执行的快捷方式:org.apache.maven.plugins:maven-resources-plugin:3.0.1:resources. 这些短名称由 maven 解析,对于 Apache 命名空间中的插件非常典型。

正如您在Maven 生命周期页面上看到的,您可能寻找的目标是:“ mvn process-resources”。该阶段有一个默认插件绑定到“ resources:resources”,它将运行资源插件。由于您执行阶段之前的所有阶段也将运行,包括内部版本号插件。

":" 表示 maven 命令行的区别。

于 2016-10-21T14:42:09.860 回答