我有以下项目结构:
parent (packing: pom)
+ framework (packing: jar)
+ plugins (packing: pom)
+ plugin_1 (packing: pom)
+ impl (packing: jar)
+ e2e_test (packing: jar)
+ plugin_2 (packing: pom)
+ impl (packing: jar)
+ e2e_test (packing: jar)
在里面plugin_1.impl
,plugin_2.impl
我有一个resource.xml
描述插件的内容。
构建很好,这意味着当我想构建它按顺序构建的整个项目时。但是,安装无法创建相同的结构。安装本地存储库后如下所示:
com/company
+ parent/version
+ pom file
+ framework/version
+ jars
+ plugins/version
+ pom file
+ plugin_1/version
+ pom file
+ plugin_1.impl/version
+ jar
+ plugin_1.e2e_tests/version
+ jar
+ plugin_2/version
+ pom file
+ plugin_2.impl/version
+ jar
+ plugin_2.e2e_tests/version
+ jar
但我想要:
com/company/parent/version
+ framework.jar
+ plugins
+ plugin_1.jar
+ plugin_1.xml (renamed resource.xml)
+ plugin_2.jar
+ plugin_2.xml (renamed resource.xml)
有没有办法创建所需的结构?
我试过maven-install-plugin
例如:
mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file \
-Dfile=parent/plugins/plugin_1/impl/resource.xml \
-DgroupId=com.company \
-DartifactId=parent \
-Dversion=1.0-SNAPSHOT \
-Dpackaging=file \
-DgeneratePom=true
或pom.xml
等效的(但对于罐子):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.0.0-M1</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>${project.groupId}</groupId>
<artifactId>${project.parent.parent.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>jar</packaging>
<file>${project.build.directory}/${project.build.finalName}.jar</file>
</configuration>
</execution>
</executions>
</plugin>
但这总是会根据 重命名文件artifactId
,我最终会覆盖同一个文件。
我能够通过copy-rename-maven-plugin
在最高父级的目标目录中使用来创建所描述的结构。
我想要这个结构,因为:
framework
可以使用具有适当描述符的目录中的任何jar
放置。plugins
- 我不想每次重新编译或更改多个插件中的某些内容时都手动执行此操作。
- 模块的端到端测试通过
framework plugin_1 (args)
在测试内部调用并检查结果来工作。为此,我需要本地存储库中的工作结构供测试项目依赖。
有没有办法在本地存储库中创建所需的结构?