Maven 我应该如何管理生成后任务?

Maven 我应该如何管理生成后任务?,maven,ant,build-process,release-management,launch4j,Maven,Ant,Build Process,Release Management,Launch4j,我有一个java应用程序 我可以运行Maven发布任务,这将为我带来一些好处: 将版本号从1.0.0-SNAPSHOT更改为1.0.0 将我的pom中的版本号增加到1.0.1-SNAPSHOT 在源代码管理中标记发布 将生成的包上载到my maven存储库 我想更进一步。我有一些构建后的步骤,我目前正在手动执行 使用适当的版本更新launch4j配置xml文件 使用launch4j将生成的jar包装在可执行文件中 将生成的EXE复制到包目录中 将多个支持文件复制到包目录中 压缩包目录 将软件

我有一个java应用程序

我可以运行Maven发布任务,这将为我带来一些好处:

  • 将版本号从1.0.0-SNAPSHOT更改为1.0.0
  • 将我的pom中的版本号增加到1.0.1-SNAPSHOT
  • 在源代码管理中标记发布
  • 将生成的包上载到my maven存储库
我想更进一步。我有一些构建后的步骤,我目前正在手动执行

  • 使用适当的版本更新launch4j配置xml文件
  • 使用launch4j将生成的jar包装在可执行文件中
  • 将生成的EXE复制到包目录中
  • 将多个支持文件复制到包目录中
  • 压缩包目录
  • 将软件包通过电子邮件发送给我的测试人员
  • 最终,我将有一个额外的任务,利用包目录构建一个安装程序

    我不知道maven或ant是否是自动化剩余6项任务的正确工具,但看起来两者中的任何一项或两者的组合都有可能完成我所需要的任务

    我可能会编写一个批处理文件或一个简单的perl脚本来更快地完成这些事情,而不是弄清楚如何完成它们,但我更愿意尽可能保持事情的标准化,这样我就不必承担永久支持发布过程的黑客行为的额外责任


    在我看来,这些任务可能不是构建/发布的标准部分,但已经足够普遍,因此应该有一个最佳/最常见的实践来完成它们。

    如果我是你,我会尝试以下组合:

    • ,除非它对于SCM相关流程不够灵活。如果使用SVN作为SCM,我会直接使用SVNKit(在自定义Maven插件中),如果灵活性是一个问题的话
    • 和/或用于剩余任务的一个或多个内部Maven插件

    我建议在构建过程中使用maven assembly插件和maven-launch4j插件

  • 使用适当的版本更新launch4j配置xml文件

    将占位符放入配置xml中,并让maven在配置过程中替换它 建造

  • 使用launch4j将生成的jar包装在可执行文件中

    使用launch4j maven插件创建可执行文件

  • 将生成的EXE复制到包目录中

    我建议将生成的工件放到存储库管理器中 因为在Maven中,所有工件都存储在单独的文件夹中 存储库。可能需要设置自己的存储库管理器 (Artifactory、Nexus、Archiva)

  • 将多个支持文件复制到包目录中

    将它们用作资源(
    src/main/resources
    )将复制它们 自动地

  • 压缩包目录

    使用maven assembly插件创建生成的zip文件

  • 将软件包通过电子邮件发送给我的测试人员

    您可以使用类似Jenkins等的电子邮件发送最终邮件或 您可以看看哪种可能是解决方案


  • 这意味着您提到的所有步骤都可以由Maven在通常的构建过程中处理。这意味着您最终可以使用maven release插件生成一个完整版本,其中包含上述所有步骤并生成所有所需的工件。

    我最终使用maven copy插件进行复制并创建了一个zip文件。文件非常清楚。我正在努力让詹金斯正常工作。launch4jmaven插件几乎和将我的launch4jxml文件复制到pom中一样简单。在某些地方,对${project.version}进行一些必要的修改以清除并将其用作变量,效果很好。此外,我还使用shade插件为launch4j构建了jar。需要注意的是,在同一阶段运行的插件按照它们在pom中声明的顺序进行处理。