使用maven概要文件进行工件版本控制

使用maven概要文件进行工件版本控制,maven,build,versioning,profile,artifactory,Maven,Build,Versioning,Profile,Artifactory,我希望项目的版本号为正常版本控制的以下格式: <version>1.0-SNAPSHOT</version> <version>1.0.1-SNAPSHOT</version> ...... 如果profile可以解决这个问题,还有哪些方法?虽然我不推荐这种方法,但您可以使用profile来完成此任务。以下是如何做到这一点: <version>${projectVersion}</version> ... <prof

我希望项目的版本号为正常版本控制的以下格式:

<version>1.0-SNAPSHOT</version>
<version>1.0.1-SNAPSHOT</version>
......

如果profile可以解决这个问题,还有哪些方法?

虽然我不推荐这种方法,但您可以使用profile来完成此任务。以下是如何做到这一点:

<version>${projectVersion}</version>
...
<profiles>
    <profile>
        <id>normal</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <projectVersion>1.0-SNAPSHOT</projectVersion>
        </properties>
    </profile>
    <profile>
        <id>build</id>
        <properties>
            <projectVersion>1.0-SNAPSHOT-${timestamp}</projectVersion>
        </properties>
    </profile>
</profiles>
${projectVersion}
...
正常的
真的
1.0-快照
建造
1.0-SNAPSHOT-${timestamp}

使用和/或评估内置的。无论如何,不建议使用这种方法,因为快照总是最新的。

如果将快照工件发布到像Nexus这样的Maven存储库管理器,它将确保每个构建都有一个唯一的时间戳。在Maven 3中,这将尝试将工件查找到.m2目录中具有${projectVersion}的路径而不是子pom.xml文件中的实际版本号。
<profiles>
    <profile>
        <id>normal</id>
        <version>1.0-SNAPSHOT<version>
    </proifle>
    <profile>
        <id>build</id>
        <version>1.0-SNAPSHOT-${timestamp}<version>
    </proifle>
</profiles>
mvn package -P normal  // this gives me artifact-1.0-SNAPSHOT.jar
or
mvn package -P build     // this gives me artifact-1.0-SNAPSHOT-${timestamp}.jar 
<version>${projectVersion}</version>
...
<profiles>
    <profile>
        <id>normal</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <projectVersion>1.0-SNAPSHOT</projectVersion>
        </properties>
    </profile>
    <profile>
        <id>build</id>
        <properties>
            <projectVersion>1.0-SNAPSHOT-${timestamp}</projectVersion>
        </properties>
    </profile>
</profiles>