【发布时间】:2018-09-20 14:00:15
【问题描述】:
我正在处理配置如下的 Java 和 C++ 模块的存储库:
回购结构
Repo/
- ModuleA/
- src/
- ...
- ModuleA.launch
- ...
- ModuleB/
- ... # same as above.
- ...
我关心的是启动脚本的定义(上面的IE:ModuleA.launch);具体来说,这些脚本的 PROJECT_ATTR 值。如果我们要打开这些启动脚本,它们会包含这样的条目:
ModuleA.launch
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<!-- or <launchConfiguration type="org.eclipse.cdt.launch.applicationLaunchType> -->
...
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="ModuleA"/>
<!-- or <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="ModuleA"/> -->
...
</launchConfiguration>
上面的问题是,如果模块没有被exactly ModuleA签出,运行脚本将找不到项目(这是脆弱的)。据我所知,这个字段不能填充变量(IE:value="${project_name}")。
有没有办法告诉启动脚本使用包含项目的项目值(或任何导致类似体验的合理解决方法)? Eclipse 版本是 Kepler SR2(并且不能更改),如果相关的话。
【问题讨论】:
-
您在谈论 Java,但请注意您正在使用用于 C/C++ 的 Eclipse CDT 的 XML 文件。你不是在混淆什么吗?
-
我查看了 CDT 代码内部,该属性设置在 CMainTab2 类中(从 CDT 7.3 开始,否则为 CMainTab),在函数
performApply()(包是 org.eclipse.cdt.launch.ui )。它是在您在窗口中配置启动配置(运行>运行配置)时设置的。如果需要,您可以在此处更改代码以编写"${project_name}"。但是当你更改 Eclipse 代码时要小心,当你更新它时可能会导致问题。此外,我不确定是否存在包含项目名称的变量project_name(或其他名称)... -
@vincrichaud 该存储库实际上处理 C++ 和 Java 项目(我只是碰巧从 C++ 模块复制 XML。无论如何,提到的行为对于 Java 和 C++ 启动脚本都是正确的。抱歉混乱;我会更新问题以反映这一点。
-
@vincrichaud 在这一点上,我认为赏金将到期而不会吸引解决问题的答案(无需修改 Eclipse 源代码)。如果您想以答案的形式表达您的调查并声明它可用于解决 CDT 的问题(并声明 JDT 可能存在类似的解决方案;无需进一步调查),那么我会接受它。
-
我会把它作为答案,因为它更具可读性和完整性。但不确定它是否应该被接受,因为它并没有真正回答你的问题......
标签: java c++ eclipse eclipse-cdt eclipse-jdt