【发布时间】:2014-09-08 12:12:12
【问题描述】:
问题
从许多 OSGi 捆绑包中,我正在使用 PDE 无头功能构建创建一个 p2 更新站点。我不想复制整个源代码树(如果可以避免的话),所以我将buildDirectory 属性指向我的源代码的位置。
我遇到的一般问题是 PDE 构建会在整个源目录中散布构建工件(不像所有其他体面的构建工具,其中构建工件存储到单独的位置,例如 Maven 的 target 文件夹)。我可以忍受,但更烦人的是 PDE 构建会修改每个编译包的 MANIFEST.MF 文件。
MANIFEST.MF 文件的唯一真正变化是
Bundle-Version: 1.0.0.qualifier
被改写为
Bundle-Version: 1.0.0.<yyyyMMddhhmm>
除此之外,整个文件都被重新格式化。当然,将文件重写为最终应包含在组装 jar 中的文件是正确的,但修改后的清单应该恕我直言不覆盖源清单。
可能的解决方案?
有人知道是否有办法告诉 PDE 无头构建将所有构建工件发送到与源文件不同的位置?
细节细节...
请在下面找到有关我的构建的详细信息。
我如何称 PDE 无头
这是我用来调用 PDE 无头构建的命令:
java \
-jar \
<prefix>/eclipse/3.8.1/SDK/plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar \
-application \
org.eclipse.ant.core.antRunner \
-buildfile \
<prefix>/eclipse/3.8.1/SDK/plugins/org.eclipse.pde.build_3.8.1.v20120725-202643/scripts/build.xml \
-data \
<prefix>/target/pde_workspace \
-Dbuilder=<prefix>/eclipse/3.8.1/SDK/plugins/org.eclipse.pde.build_3.8.1.v20120725-202643/templates/headless-build \
-DtopLevelElementId=org.example.myproject.feature \
-DtopLevelElementType=feature \
-DbuildDirectory=<prefix>/source \
-DbaseLocation=<prefix>/targetPlatform \
-DjavacSource=1.7 \
-DjavacTarget=1.7 \
-DcompilerArg=-g \
-DbuildLabel=output \
-DarchivePrefix=org.example.myproject \
-DbuildId=org.example.myproject.feature \
-DarchivesFormat=*,*,* - folder \
-Dp2.gathering=true \
-Dp2.build.repo=<prefix>/target/update-site \
-DskipMirroring=true \
-DcollectingFolder=<prefix>/target/tmp
我希望添加 -DcollectingFolder 会将所有构建工件重定向到此文件夹,但它是空的。
PDE 无头文档
PDE 无头构建的文档很全面,但有些不精确。例如,对于它的众多选项之一,它说:
buildType:构建类型,通常是 I、N、M 等。
我能找到的文档是这样的:
有人知道 PDE 无头构建的其他文档吗?
【问题讨论】:
-
构建在构建目录中做了很多乱七八糟的事情,所以从头开始复制所有源代码是正常的。
-
@greg-449 我知道,这是我们通常所做的,但是每次都复制一个 really 大的源目录(> 300 个包)真的很愚蠢你建立。
-
对不起,但我真的认为这是必须要做的。我认为这是由自动构建使用的,该构建将通过从源代码控制系统中检出代码来创建目录。
标签: eclipse eclipse-pde headless