Tho*_*sen 13 java build-process maven
我们使用Jenkins使用md5指纹识别工件以及自上次构建以来工件是否已更改.不幸的是,Maven构建总是生成二进制不同的工件.
因此,我正在研究使Maven为同一组输入文件生成相同的jar工件,无论它们在何时何地构建,这些都意味着必须对jar文件中的条目进行排序 - 不仅在索引中,但按顺序将它们写入jar文件.
在检查了使用maven-assembly-plugin的maven-jar-plugin之后,我得出的结论是,在一次写入所有文件之前,它们不会收集所有要写入内存的文件,而是一次写一个.这意味着对生成的jar进行后处理而不是更改当前行为可能会更好,因此我当时可以对条目进行排序,将时间戳等归零等.
我不熟悉编写Maven插件,所以我的问题是,我应该如何编写一个插件,Maven知道如何判断工件jar的位置以及我如何将其挂钩到我的pom.xml中?
(起初我需要这个用于jar文件,但war文件也会很好).
创建maven插件项目
mvn archetype:generate \
-DgroupId=sample.plugin \
-DartifactId=hello-maven-plugin \
-DarchetypeGroupId=org.apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-plugin
Run Code Online (Sandbox Code Playgroud)
调用此命令,它将生成一个骨架项目,其中包含一个名为MyMojo.java
在方法中编写您的内容execute(),然后通过以下方式将该插件安装到您的存储库中mvn clean install
然后将其执行附加到您的项目中pom.xml
<build>
<plugins>
<plugin>
<groupId>sample.plugin</groupId>
<artifactId>hello-maven-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>sayhi</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
访问 Mojo 内的项目属性
/**
* The Maven project.
*
* @parameter expression="${project}"
* @required
* @readonly
*/
private MavenProject project;
Run Code Online (Sandbox Code Playgroud)
进而
project.getProperties("build.directory")
Run Code Online (Sandbox Code Playgroud)
并读取其他属性来确定您的 jar 文件已打包
看
| 归档时间: |
|
| 查看次数: |
570 次 |
| 最近记录: |