【发布时间】:2014-03-18 21:24:21
【问题描述】:
我有一些 OSGi 捆绑包(普通 OSGi,没有 Eclipse 依赖项)和一个带有 pax runner 的 maven 构建,可以在 Knopflerfish 服务器中启动它们。
maven 构建和启动包工作正常,但只能通过 pax runner (mvn pax:provision)。
对于调试捆绑包,最好直接从 eclipse 中启动它们,否则我的断点不会触发(似乎很明显,因为 pax:provision 启动了不再与 eclipse 绑定的内置 jar 文件)。
MANIFEST.MF 文件以通常的 maven 方式构建,即使用 maven-bundle-plugin。因此,直接从 eclipse 启动捆绑包失败,因为 eclipse 平台错过了所有需要的外部 OSGi 捆绑包,而 maven 得到了它的 maven 魔法。
因此,我正在寻找一种方法来以某种方式设置我的 eclipse 目标平台,以便自动包含来自 maven 的 OSGi 捆绑包,并且可以从 IDE 中访问以在启动时解决约束。
我检查了目标平台设置,但显然只能向其中添加特定的 jar 和文件夹,而不是像使用整个本地 maven 存储库所需的整个文件夹结构。如果我需要为每个会变得非常丑陋的新依赖项更新我的目标平台(我希望我可以执行类似“将 C:\Users\myprofile.m2\repository 添加到目标平台”之类的操作,而 Eclipse 只会加载什么它需要)。
在研究时,我发现了 Eclipse Tycho,但显然这只编译了一个用于构建捆绑包的目标平台,而不是用于从 IDE 中编译和启动它们。接下来我找到了这个网站:http://andriusvelykis.github.io/pde-target-maven-plugin/ 这看起来正是我所需要的。从文档来看,这个插件似乎能够获取从 eclipse tycho 编译的目标平台并将其写入文件。然后我可以将此文件导入回我的 IDE 并将其用作目标平台。
我遇到的问题是,插件退出时出现我无法推断的错误(我打开堆栈跟踪以获得更完整的错误消息)。
[ERROR] Failed to execute goal lt.velykis.maven:pde-target-maven-plugin:1.0.0:add-pom-dependencies (default-cli) on project orchestrator-parent: The parameters 'baseDefinition' for goal lt.velykis.maven:pde-target-maven-plugin:1.0.0:add-pom-dependencies are missing or invalid -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal lt.velykis.maven:pde-target-maven-plugin:1.0.0:add-pom-dependencies (default-cli) on project orchestrator-parent: The parameters 'baseDefinition' for goal lt.velykis.maven:pde-target-maven-plugin:1.0.0:add-pom-dependencies are missing or invalid
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:220)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:317)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:152)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
at org.codehaus.classworlds.Launcher.main(Launcher.java:46)
Caused by: org.apache.maven.plugin.PluginParameterException: The parameters 'baseDefinition' for goal lt.velykis.maven:pde-target-maven-plugin:1.0.0:add-pom-dependencies are missing or invalid
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.populatePluginFields(DefaultMavenPluginManager.java:581)
at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:534)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:97)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 20 more
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginParameterException
这是插件的配置:
<plugin>
<groupId>lt.velykis.maven</groupId>
<artifactId>pde-target-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<id>pde-target</id>
<goals>
<goal>add-pom-dependencies</goal>
</goals>
<configuration>
<baseDefinition>D:/platform.target</baseDefinition>
<outputFile>D:/platform-pde.target</outputFile>
</configuration>
</execution>
</executions>
</plugin>
我可以看到路径是正确的,因为创建了platform-pde.target 文件,但它与基本文件具有相同的内容。
文件内容(只是我创建并作为基础文件共享的标准目标平台):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?pde version="3.8"?><target name="OrchestratorPlatform" sequenceNumber="8">
<locations>
<location path="${eclipse_home}" type="Profile"/>
</locations>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
<nl>en_US</nl>
</environment>
<launcherArgs>
<vmArgs>-Dosgi.requiredJavaVersion=1.6 -Xms40m -Xmx512m</vmArgs>
</launcherArgs>
</target>
我正在寻找的是关于如何正确配置插件或任何其他方式的提示,我可以将我的 maven 依赖包带入我的目标平台,这样我就可以直接从 eclipse 启动包,而无需在某处维护依赖项再次深入了解日食偏好。
【问题讨论】: