我的jars是通过ssh远程安装的,重要的是我知道安装了哪个版本。这不是通过我目前在pom.xml中使用版本号来实现的,因为这个号码是手动更新的。 我希望能做什么,不能找到一个体面的插件或一个明确的告诉我。 Jenkins应该在pom文件中构建rev一个内部版本号(例如1.0.3。或1.0.3-或1.0.3_或者只是一个名为内部版本号的附加属性)将这个内部版本号作为jar名称的一部分会很好这样很容易区分等。) 有什么想法吗?
答案 0 :(得分:1)
这个post描述了在Maven项目中使用Jenkins内部版本号的方法。但是有一些必要的调整可以满足您的要求。
<properties>
<build.number></build.number>
</properties>
该属性应具有空值默认值。如果未指定内部版本号(作为Java系统属性),则jar的名称通常为$ {artifactId} - $ {version} .jar,例如myartifact-0.0.1-SNAPSHOT.jar
<build>
<finalName>${artifactId}-${version}${build.number}</finalName>
</build>
最终名称现在将包含内部版本号作为后缀。例如:myartifact-0.0.1-SNAPSHOT-153.jar(请注意,构建号之前的连字符必须是系统属性的一部分 - 请参阅下一步)
mvn clean install -Dbuild.number=-${BUILD_NUMBER}
请注意,编号前的连字符!
答案 1 :(得分:1)
从Maven 3.2.1开始,您可以在版本中定义属性,如下所示:${revision}
, ${changelist}
, and ${sha1}
。
<groupId>com.soebes.examples.j2ee</groupId>
<artifactId>parent</artifactId>
<version>1.0.4-${revision}-SNAPSHOT</version>
这是一个解决方案。
您还可以将所有需要的信息放入MANIFEST.MF文件中,这样您就可以确切地说出安装了哪个版本。在那里,您可以使用svn版本号或git sha1以及补充内容,例如CI解决方案的内部版本号。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<archive>
<addMavenDescriptor>true</addMavenDescriptor>
<index>true</index>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
<manifestEntries>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<revision>${svn.revision}</revision>
<build-number>${BUILD_NUMBER}</build-number>
<build-id>${BUILD_ID}</build-id>
<build-time>${maven.build.timestamp}</build-time>
</manifestEntries>
</archive>
</configuration>
</plugin>
答案 2 :(得分:0)
虽然Maven没有设计这个功能,因为不应该考虑VCS提交的每个构建,因为要释放的构建的稳定性。但是有一个使用插件的工作。我不建议使用内部版本编号进行版本构建,而是将此实践与版本一起使用。
在POM文件中添加:
第1步:按如下方式配置SCM
'<scm>
<connection>scm:git/svn:repositary location</connection>
<url>similar</url>
</scm>
--
--
<build>
--
--
<plugins>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-scm-plugin</artifactId>
<version>1.9.2</version>
<configuration>
<connectionType>connection</connectionType>
</configuration>
</plugin>'
**第2步:使用BuildNumber插件**
<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>
<configuration>
<format>{0,date,yyyy-MM-dd_HH-MM}</format>
<items>
<item>timestamp</item>
</items>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
第3步:
<finalName>webapp-demo-${buildNumber}</finalName>
$ {buildNumber}可以是时间戳或变更集/修订版。这完全取决于你的需要。 Tutorial