我是Maven的新手。我们有一个纯化的Eclipse RCP应用程序。我们不使用第谷。它是Maven + m2e。在执行mvn clean install命令时,它可以正常构建。它将manifest.mf写入每个插件的目标/类,提取依赖关系,将依赖关系复制到target / classes / lib并在构建阶段创建所有插件文件夹。但是我们如何使用“Run as Eclipse Application”从eclipse运行应用程序?它这次没有将清单写入{baseDir} / META-INFat。它没有将依赖关系复制到{baseDir} / lib文件夹。它并没有从本地回购中汲取任何依赖关系。在执行此操作时,我应该专门使用任何maven插件还是将绑定目标用于不同的构建阶段?如何在运行期间使用Maven生成类路径作为应用程序?这是我们项目中使用的代码片段,它专门生成清单,复制依赖项e.t.c
以下代码片段通过使用正确的目录结构创建和/或暂存所有必需的插件和其他元数据文件来“编译”Eclipse产品。
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
com.cerner.engineering
</groupId>
<artifactId>
cerner-eclipse-packaging-plugin
</artifactId>
<versionRange>
[3.4,)
</versionRange>
<goals>
<goal>compile-product</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
这就是我们如何将依赖项复制到插件的target / classes / lib文件夹。 generate-osgi-manifest目标在“编译”阶段运行。
<build>
<plugins>
<plugin>
<groupId>com.cerner.engineering</groupId>
<artifactId>cerner-osgi-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<classpathPrefix>lib/</classpathPrefix>
<classpath>., lib/markup-convert-3.1.jar,
src/main/resources/</classpath>
<requiredExecutionEnvironment>JavaSE-1.6</requiredExecutionEnvironment>
<exportPackages>
<enabled>false</enabled>
</exportPackages>
<localization>plugin</localization>
<headers>
<header>
<name>Export-Package</name>
<values>
<value>
<name>the packages to be exported
</name>
</value>
</values>
</header>
<header>
<name>Bundle-SymbolicName</name>
<values>
<value>
<name>bundle name</name>
<directives>
<singleton>true</singleton>
</directives>
</value>
</values>
</header>
<header>
<name>Require-Bundle</name>
<values>
<value>
<name> required bundles</name>
</value>
</values>
</header>
<header>
<name>Bundle-Name</name>
<values>
<value>
<name>%Bundle-Name.0</name>
</value>
</values>
</header>
<header>
<name>Bundle-Vendor</name>
<values>
<value>
<name>%Bundle-Vendor.0</name>
</value>
</values>
</header>
<header>
<name>Import-Package</name>
<values>
<value>
<name>Imported packages</name>
</value>
</values>
</header>
<header>
<name>Eclipse-RegisterBuddy</name>
<values>
<value>
<name>Registered Bundle</name>
</value>
</values>
</header>
</headers>
</configuration>
<executions>
<execution>
<goals>
<goal>generate-osgi-manifest</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<configuration>
<outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<stripVersion>false</stripVersion>
<includeArtifactIds>markup-convert</includeArtifactIds>
</configuration>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
</execution>
</executions>
</plugin>
从命令行或使用Maven构建构建时,这一切都正常。在我运行可执行文件后构建它运行正常。但是当我作为Eclipse Application运行时,它不起作用。或者从产品文件中启动应用程序。我应该添加任何Maven插件来执行此操作吗?我不明白这是怎么回事。非常感谢任何帮助。