我是Maven的新手。我们有一个经过 mavenized 的 Eclipse RCP 应用程序。我们不使用第谷。它是 Maven+m2e。它在执行 mvn clean install 命令时构建良好。它将 manifest.mf 写入每个插件的 target/classes,拉取依赖项,将依赖项复制到 target/classes/lib 并在构建阶段创建 plugins 文件夹。但是我们如何使用“作为 Eclipse 应用程序运行”从 Eclipse 运行应用程序?这次它不会将清单写入 {baseDir}/META-INF。也不会将依赖项复制到 {baseDir}/lib 文件夹。它并没有从本地仓库中提取任何依赖项。在执行此操作时,我是否应该专门使用任何 Maven 插件或使用绑定目标到不同的构建阶段?在作为应用程序运行期间如何使用 Maven 生成类路径?这是我们项目中使用的代码片段,专门生成清单、复制依赖项等
下面的代码片段通过使用正确的目录结构创建和/或暂存所有必要的插件和其他元数据文件来“编译”一个 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 应用程序运行时它不起作用。或从产品文件启动应用程序。我应该添加任何 Maven 插件来执行此操作吗?我不明白这是如何工作的。任何帮助是极大的赞赏。