使用maven建模项目之间的XML依赖关系
问题描述:
我正在构建一个由两个项目组成的应用程序:common
和theApp
。 现在,theApp
取决于common
(使用dependency
建模)。我面临的棘手的事情是:使用maven建模项目之间的XML依赖关系
common/src/main/env
有XML文件,这将需要theApp
运行时需要。
为了让事情更有趣,运行的分布都会有这样的结构:
-
bin/
- 有脚本 -
lib/
- 拥有由theApp
和common
-
dependencies/
创建的罐子 - 拥有图书馆应用程序所依赖的罐子 -
config/
- 具有theApp
和common
的012文件
我都做过,但我仍然在寻找一种方式来写theApp
一个maven目标的POM,可以把common
的XML文件config/
。
任何想法?
感谢, Harshath
答
你需要maven的装配和依赖插件。创建通用/ src目录的装配描述符/主/资源/组件/ config.xml中像这样:
<assembly>
<id>config</id>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>${basedir}/src/main/env</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<useProjectArtifact>false</useProjectArtifact>
<useTransitiveDependencies>true</useTransitiveDependencies>
<outputDirectory>config/</outputDirectory>
</dependencySet>
</dependencySets>
</assembly>
然后用它在你的POM,如:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>config</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>my.groupid</groupId>
<artifactId>common</artifactId>
<version>my.version</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
这将创建一个附加的神器common-config.zip,您可以使用app的pom.xml中的maven-dependency-plugin来扩展它,将这些文件放在app的target/config目录中(这可能不合适,这取决于您如何创建最终发行版) :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-dependencies</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>my.groupid</groupId>
<artifactId>common</artifactId>
<version>my.version</version>
<type>zip</type>
<overWrite>true</overWrite>
<includes>*</includes>
<outputDirectory>${project.build.directory}/config</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
其中一些记录在http://www.sonatype.com/books/mvnref-book/reference/assemblies.html ...