我想尝试创建自己的 PPA。我的项目是一个使用 maven 构建的 Java 项目。这是我到目前为止已经完成的工作:
- 创建了 PPA。
- 在 Launchpad 上建立一个新项目。
- 添加了从 SVN 存储库导入我的项目的分支。
- 为将构建发布到我的 PPA 的分支创建了一个配方。
这就是我陷入困境的地方。
我已经阅读了教程并在 Google 上搜索了很多次;但是,我还是找不到如何构建我的项目。
我可以开始构建分支;但是,正如我所料,它失败了。我想我必须将一些元信息(如 makefile)放入存储库。在 Launchpad 上构建和打包 Maven 项目是否可行?我还尝试使用bzr dh-make
和在本地构建 .deb 文件debuild
。在文件夹bzr dh-make
中创建了很多文件./debian
,但 debuild
失败了。我猜如果我在项目中指定了正确的元信息,它就会起作用,所以它与 Launchpad 上的问题相同。
.deb
我知道这是一个很普遍的问题,但我认为即使你没有像我这样的“特殊”案例,也缺乏适当的文件打包教程。
把它们加起来:
我必须在项目中提供哪些文件/信息才能正确构建和打包?
任何帮助都非常感谢 :-)
答案1
查看我的 bookjar 项目: http://code.google.com/p/bookjar/source/browse/
具体来说,就是 debian 目录(尤其是 debian/package.sh 文件)和 build.xml (ant) 文件。该文件中有一个新的目标“upload”,用于将可构建的工件上传到 launchpad buildbot。
我使用的是 ivy 和 netbeans ant 基础架构,因此对您来说可能略有不同。但是,有一件事是肯定的:您不能从远程构建服务器使用 ivy 或 maven。您需要上传您使用的所有库,无论是以代码还是 jar 的形式。ivy:retrive 将文件下载到 current_dir/lib,因此我的 netbeans 项目设置为在那里查找它的库(nblibraries.properties 是 netbeans 基础架构的一部分)。阅读 build.xml 了解详细信息(基本上,debian/rules 文件调用一个特殊的 ant 目标来在服务器中构建,该目标不会尝试符号链接 jar 文件 - 因为它们已经复制到那里)。
我还在我的 package.sh 中利用我的项目在 mercurial 中从 hg 日志构建一个更改日志文件,因此如果您想要相同程度的自动化但不使用 hg,则还有其他问题需要解决(事实上,我认为我的更改日志通过使每个更改成为“次要”版本而违反了 debian 更改日志的规则)。