使用Maven从eclipse运行Eclipse RCP应用程序?

时间:2013-07-17 16:10:21

标签: maven maven-2 eclipse-rcp m2e

我是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插件来执行此操作吗?我不明白这是怎么回事。非常感谢任何帮助。

0 个答案:

没有答案