1

我是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 插件来执行此操作吗?我不明白这是如何工作的。任何帮助是极大的赞赏。

4

0 回答 0