首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eclipse无头构建修改源dirs和MANIFEST.MF

Eclipse无头构建修改源dirs和MANIFEST.MF
EN

Stack Overflow用户
提问于 2014-09-08 12:12:12
回答 1查看 170关注 0票数 2

问题所在

从许多OSGi包中,我使用PDE无头功能构建创建了一个p2更新站点。我不想复制整个源树(如果可以避免的话),所以我将buildDirectory属性指向我的源的位置。

我遇到的一般问题是,PDE构建将构建工件分散到源目录中(而不是像所有其他体面的构建工具一样,将构建构件存储到单独的位置,例如Maven的target文件夹)。我可以接受这种情况,但更令人烦恼的是,PDE构建修改了每个已编译包的MANIFEST.MF文件。

MANIFEST.MF文件的唯一真正更改是

代码语言:javascript
复制
Bundle-Version: 1.0.0.qualifier

被重写为

代码语言:javascript
复制
Bundle-Version: 1.0.0.<yyyyMMddhhmm>

除此之外,整个文件被重新格式化。当然,将文件重写到组装的jars中的内容是正确的,但是修改后的清单应该是IMHO,而不是覆盖源清单。

一个可能的解决方案?

有没有人知道是否有一种方法可以告诉PDE无头构建将所有构建工件发送到与源文件分离的位置?

那些细节..。

请在下面找到有关我的构建的详细信息。

我如何称呼PDE无头

这是我用来调用PDE无头构建的命令:

代码语言:javascript
复制
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等。

我找到的文件是:

  • config.htm

有人知道PDE无头构建的其他文档吗?

EN

回答 1

Stack Overflow用户

发布于 2014-11-11 14:16:42

您希望设置属性buildTempFolderfeature.temp.folder。我不相信这些财产在任何地方都有记载。

如果您熟悉ant,那么了解它的方法是查看为插件生成的build.xml文件。在buildTempFolder目标中,如果设置了<init>,则生成将最终设置如下

build.result.folder=${buildTempFolder}/plugins/org.example.plugin_1.2.3.201411110853`

如果未设置buildTempFolder,则默认值为${basedir},${basedir}是插件的根文件夹。

这个build.result.folder将是大多数已编译的.class文件(参见<@dot>目标)的目标,清单将在修改之前复制到那里(参见<publish.bin.parts>目标)。如果您使用customBuildCallbacks,那么在调用自定义回调之前,所有事情都将在这里进行处理。

feature.temp.folder类似于buildTempFolder,但是影响特性而不是插件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25723990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档