【发布时间】:2011-01-07 20:08:12
【问题描述】:
这个问题实际上并不是关于最佳实践或架构,而是关于如何专门配置 Hudson 和 Maven 来完成我想要的。我有点迷茫。
我有一个使用 SWT 的 Java 应用程序,我需要为不同的平台构建副本。目前,我只需要 Linux i386 和 Linux amd64,但在未来,我还需要添加 Windows x86/x64,所以我想确保第一次将其设置“正确”。
我的应用程序具有项目 pom.xml 中列出的所有依赖项和其他信息,包括根据操作系统、架构和系列获取的不同 SWT jar。
我的问题是,如何以最少的配置重复为 linux i386 和 linux amd64 构建版本?现在我正在做以下事情:
- 项目在 pom.xml 中指定所有依赖项,并且此项目设置为在 Hudson 中构建并将生成的 .jar 部署到 Nexus
- Builder-linux-i386 在 Project 之后运行,并为 i386 指定任何 JNI 文件,并使用 de.tarent maven-pkg-plugin 从 Nexus 中获取项目 jar 并将其与所有依赖项一起组装到单个“胖”jar文件,然后进入 .deb 文件进行安装。
- Builder-linux-amd64 的作用相同,但针对 amd64 文件
我一直在尝试通过将-P profilename 添加到他们的 Hudson 项目中来指定要在 Builder 项目中使用哪些依赖项,其中 profilename 是在 Project pom.xml 中命名的配置文件。 Maven 似乎不喜欢这个并打印出它没有激活该配置文件。它只使用 Project 的 pom 中的默认配置文件。
设置的正确方法是什么?我想在我的项目 pom 中指定我的所有依赖项,并有一个 Hudson 项目编译该项目的 jar 并将其部署到 Nexus,然后 独立 项目获取该 jar 并组装它以及用于发布的特定于平台的文件。我不想重复构建整个原始项目,也不想拥有大量重复的配置信息或复制粘贴的 pom。
我让它适用于 unix-amd64 只是因为那是构建机器,所以 Maven 以该架构为目标。另外,我觉得设置没有想象中的那么干净。建议?
【问题讨论】: