刚开始进入Maven并构建自定义Mojos。希望有人可以在这里提供帮助。
一般的想法是我想在不修改POM本身的情况下修改POM中的版本。我将使用此功能将限定符添加到已部署的版本的末尾。例如,我可能会将1.0
更改为1.0-SNAPSHOT
,1.0-RELEASE
,1.0.123
(基于最新的增量版本)或1.0-a1b2c3d
(基于Git)提交哈希)。这里的目标是开发人员不必担心更改版本号(当它无关紧要时),而是构建处理它。
所以我试图将版本号更新为initialize
阶段的一部分,但它并没有坚持我所期望的所有地方。这是我的Mojo:
package com.tomkel.maven;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.project.MavenProject;
/**
* This goal overrides the current artifact version
*
* @goal overrideVersion
*
* @phase initialize
*/
public class VersionOverrideGoal
extends AbstractMojo
{
/**
* @parameter default-value="${project}"
*/
private MavenProject mavenProject;
/**
* Run the Mojo
* @throws org.apache.maven.plugin.MojoExecutionException
*/
public void execute()
throws MojoExecutionException
{
this.mavenProject.setVersion("TRY_THIS");
this.mavenProject.getArtifact().setVersion("TRY_THIS_TOO");
}
}
但是当我把它包含在我的项目的POM中时:
<plugin>
<groupId>com.tomkel</groupId>
<artifactId>tk-version-override-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>overrideVersion</goal>
</goals>
</execution>
</executions>
</plugin>
然后我在项目构建的install
阶段看到类似的内容:
[INFO] Building jar: /home/tkelley/git/tomkel/some-project/target/some-project-1.2.3.jar
[INFO]
[INFO] --- maven-install-plugin:2.3:install (default-install) @ some-project ---
[INFO] Installing /home/tkelley/git/tomkel/some-project/target/some-project-1.2.3.jar to /home/tkelley/.m2/repository/com/tomkel/some-project/TRY_THIS_TOO/some-project-TRY_THIS_TOO.jar
[INFO] Installing /home/tkelley/git/tomkel/some-project/pom.xml to /home/tkelley/.m2/repository/com/tomkel/some-project/TRY_THIS_TOO/some-project-TRY_THIS_TOO.pom
由于工件构建为some-project-1.2.3.jar
,因此我的存储库(nexus)将其添加为版本1.2.3
。但这不是我想要的 - 我希望它被添加为TRY_THIS_TOO
。
我在这里做错了吗?
如果有帮助,我会在这里将Mojo代码,POM和构建日志放入Gist:https://gist.github.com/tomkel5/8199801
提前致谢!