Mih*_*ila 22 maven maven-release-plugin git-flow
关于接受答案的说明:由于强有力的间接证据,我接受了答案.尽管如此,这是间接的证据,所以要带上一粒盐.
当用户运行插件目标而不是生命周期阶段时,如何触发插件?(之前已经问过,但答案是使用生命周期阶段.)
例证:我需要release:branch
调用regex-plugin
以生成一个当前版本作为其名称的分支,减去-SNAPSHOT后缀.这就是我所拥有的,它要求开发人员激活配置文件并调用verify
阶段.我需要开发人员简单地调用release:branch
,这反过来应该导致regex-plugin
运行.与Gitflow有点结婚.
<profile>
<id>Release Branch</id>
<build>
<plugins>
<!-- On validate, compute the current version without -SNAPSHOT. -->
<!-- Put the result in a property. -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<value>${project.version}</value>
<regex>^(.*)-SNAPSHOT$</regex>
<replacement>$1</replacement>
<name>project.unqualifiedVersion</name>
</configuration>
</execution>
</executions>
</plugin>
<!-- Also on validate, run the branch plugin, and use -->
<!-- the non-SNAPSHOT version thus computed in the branch name. -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>branch</goal>
</goals>
<configuration>
<branchName>release/${project.unqualifiedVersion}</branchName>
<updateWorkingCopyVersions>true</updateWorkingCopyVersions>
<updateBranchVersions>false</updateBranchVersions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Run Code Online (Sandbox Code Playgroud)
目的是release:branch
将当前快照版本(例如1.0.5-SNAPSHOT
)移动到一个新分支中,该分支应该以版本命名,但没有多余的-SNAPSHOT
后缀(1.0.5
).那么当前分支应该采取一个新的快照版本(1.1.0-SNAPSHOT
不1.0.6-SNAPSHOT
,因为我们要释放1.0.x
有空间的修补程序,所以我们保留它的分支)(我没有的一个快照版本自动计算想通了还,所以,如果您运行上面的Maven配置validate
,则必须在提示时输入它).
到目前为止提供的证据相当具有间接性.我已经做了一些自己的研究,所以我最好在这里分享一下.以下是更多相同的"它不可能",或者是替代品的构建块.
jetspeed:mvn plugin ---运行指定的插件序列; 要运行的配置可以通过系统属性来改变; IDE集成问题
在插件运行之前执行目标(StackOverflow) ---在自定义Mojo的上下文中回答相同的问题
让Mojo再次从自定义Mojo的上下文中运行其他目标(StackOverflow)
配置默认Mojo执行 ---描述Mojos如何运行的Maven页面 - 更多间接证据
在目标执行之前触发阶段(StackOverflow) ---迂回解决我的问题,遗憾的是回答了否定
有趣的:引导到Ant插件开发 ---吸引我,因为,虽然它需要编写一个自定义插件,它是所有ANT + Maven配置,没有代码进行编译; 大概是进入门槛较低
创建并行生命周期 ---吸引人的方法,因为我可以完全控制生命周期的内容到使用Gitflow动词的位置; 不清楚IDE如何整合这个; 存在学习曲线和采用障碍问题
不,你不能绑定到另一个插件的插件.只到一个阶段.
在Maven内部术语中,"Mojo"是可行的."插件"是包裹的mojos集合,因此您可以从POM中引用它们.Mojos仅与阶段结合.
从插件开发文档:
插件描述符中指定的每个Mojo必须提供以下内容
...
phase ...如果用户未在POM中明确设置阶段,则定义绑定mojo执行的默认阶段.注意:当插件声明添加到POM时,此批注不会自动生成mojo.它只是使用户能够
<phase>
从周围<execution>
元素中省略元素.
有关进一步确认,请参阅MojoExecution的源代码(此类的JavaDoc没有用)并注意枚举的执行源有两种:
源自CLI直接调用目标的执行
和
源自绑定到生命周期阶段的目标的执行
没有其他方法可以启动执行意味着你运气不好(除非采取特殊措施,例如滚动你自己的插件,它结合了你想要链接的两个插件的效果,然后使用你的自定义插件).
归档时间: |
|
查看次数: |
9110 次 |
最近记录: |