我有一个java应用程序
我可以运行Maven发布任务,它将为我做一些很好的事情:
- 将版本号从1.0.0- snapshot更改为1.0.0
- 将my pom中的版本号增加到1.0.1-SNAPSHOT
- 在源代码控制中标记版本
- 上传结果包到我的maven仓库
我想更进一步。我有一些构建后的步骤,我目前正在手工做。
- 用合适的版本更新launch4j配置xml文件
- 使用launch4j将生成的jar包到可执行文件中
- 将生成的EXE复制到包目录
- 复制几个支持文件到包目录
- 压缩包目录
- 把这个包发给我的测试人员。
最后我将有一个额外的任务,即利用包目录构建一个安装程序。
我不知道maven或ant是正确的工具来自动化我剩下的6个任务,但看起来其中一个或两者的组合都可能完成我需要的。
我可能会写一个批处理文件或一个简单的perl脚本来做这些事情,而不是弄清楚如何做这些事情,但我更愿意尽可能保持标准,这样我就不会承担额外的责任,支持一个永久的发布过程。
在我看来,这些任务可能不是构建/发布的标准部分,但通常可以看到,应该有一个最佳/最常见的实践来完成它们。
我建议在构建过程中使用maven-assembly-plugin以及maven-launch4j-plugin。
-
用合适的版本更新launch4j配置xml文件
在配置XML中放置一个占位符,并让maven在配置过程中替换它构建。
-
使用launch4j将生成的jar包在可执行文件中
使用launch4j-maven-plugin创建可执行文件。 将生成的EXE复制到包目录
我建议将生成的工件放入存储库管理器中一个单独的文件夹,因为在Maven中所有的工件都存储在其中一个存储库中。您可能需要设置自己的存储库管理器(Artifactory, Nexus, Archiva).
复制几个支持文件到包目录
使用它们作为资源(
src/main/resources
),它们将被复制自动。压缩包目录
使用maven-assembly-plugin创建生成的zip文件
把这个包发给我的测试人员。
您可以使用像Jenkins等的CI来发送最终邮件或
你可以去maven-changes-plugin查看一下。
这意味着您提到的所有步骤都可以在正常构建期间由Maven处理。这意味着最终您可以使用maven-release-plugin来生成包含上述所有步骤并生成所需工件的完整版本。
如果我是你,我会尝试以下组合:
- Maven发布插件,除非它对SCM相关的过程不够灵活。如果使用SVN作为SCM,我会直接使用SVNKit(在自定义Maven插件中),如果灵活性是一个问题。Maven launch4j plugin.
- Maven组件插件
- Maven Ant运行插件和/或一个或多个内部Maven插件用于其余任务。