我的情况是:
- 我有一个扫描库目录的项目。
- 这个项目与其他项目(jar)没有依赖关系,但是这会动态地将它们从目录加载到他的类加载器(是一种插件架构)。
- 两个项目都在一个 pom 项目下
pom 示例:
家长:
<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 “plugin” 并在构建时将其复制到项目 “loader” 中定义的目录。
这必须在 eclipse 中本地工作,并在 jenkins 中自动构建。
有人知道我该怎么做吗?
最佳答案
基本上分四步解决:
- 我在“plugin”项目中配置插件“maven-assemble-plugin”,以将 jar 复制到项目“loader”内的相对路径中。
- 在此配置中,我在 jar-with-dependencies 中指定属性“descriptorRef”,这有助于我将必要的库打包到 jar 中
- 我在“plugin”项目中配置插件“maven-copy-plugin”,以将属性复制到项目“loader”内的同一相对路径中
我的“插件”项目中的 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}
中的插件- 为了在 Eclipse 中自动构建,我为该项目创建了一种新型的程序构建器。该构建器运行命令“mvn assembly: assembly”。
第 1 步:
第 2 步:
第 3 步:在“构建选项”选项卡中,您可以配置此执行的详细信息。
对于 jenkins,我创建了一个仅在测试中使用的虚拟插件。
关于java - 构建阶段的 Maven 复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10454935/