2

我的情况是:

  • 我有一个扫描库目录的项目。
  • 这个项目不依赖于其他项目(jars),但这会动态地将它们从目录加载到他的类加载器(是一种插件架构)。
  • 两个项目都在一个 pom 项目下

poms的例子:

家长

<groupId>mygroup</groupId>
<artifactId>myparent</artifactId>
<packaging>pom</packaging>
<version>1.0</version>
...

“插件”

<parent>
    <artifactId>myparent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0</version>
</parent>

<groupId>mygroup</groupId>
<artifactId>myplugin</artifactId>
<packaging>jar</packaging>
<version>1.0</version>
...

“装载机”

<parent>
    <artifactId>myparent</artifactId>
    <groupId>mygroup</groupId>
    <version>1.0</version>
</parent>

<groupId>mygroup</groupId>
<artifactId>myloader</artifactId>
<packaging>war</packaging>
<version>1.0</version>
...

现在,我需要生成jar “插件”并在构建时将其复制到项目“加载器”中定义的目录中。

这必须在 eclipse 和 jenkins 自动构建中本地工作。

有人知道我该怎么做吗?

4

2 回答 2

2

基本上它分四步解决:

  1. 我在我的“插件”项目中配置插件“maven-assembly-plugin”,以将 jar 复制到项目“loader”中的相对路径中。
  2. 在此配置中,我在jar-with-dependencies中指定属性“descriptorRef” ,这有助于我将必要的库打包到 jar 中
  3. 我在我的“插件”项目中配置插件“maven-copy-plugin”,以复制项目“加载器”中相同相对路径中的属性

我的“插件”项目中的 pom.xml 如下所示:

<plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <outputDirectory>${my.output.directory}</outputDirectory>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>     
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.goldin.plugins</groupId>
            <artifactId>maven-copy-plugin</artifactId>
            <version>0.2.3.6</version>
            <executions>
                <execution>
                    <id>create-archive</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <resources>
                            <!-- Copy config properties -->
                            <resource>
                                <targetPath>${my.output.directory}</targetPath>
                                <directory>${project.basedir}/conf</directory>
                                <includes>
                                    <include>*.properties</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>

另一方面,我将项目设置为使用目录${my.output.directory}中的插件

  1. 为了在 eclipse 中自动构建,我为项目创建了一种新型的程序构建器。此构建器运行命令“mvn assembly:assembly”。

第 1 步

在此处输入图像描述

第 2 步

在此处输入图像描述

第 3 步:在“构建选项”选项卡中,您可以配置此执行的详细信息。

对于 jenkins,我创建了一个仅用于测试的虚拟插件。

于 2012-05-07T20:41:29.917 回答
0

运行 maven install for plugin,将生成的 jar 放入本地 maven repo。然后在您的依赖项部分中指定插件作为依赖项。在这种情况下,即使这些项目是同级项目,它们也只是同级项目,因为当 mvn 目标在父级中运行时,父级指定了构建顺序。如果您打算在那里使用它们的实际构建工件,则必须包含在兄弟姐妹中。

于 2012-05-04T20:08:00.207 回答