使用maven建模项目之间的XML依赖关系

问题描述:

我正在构建一个由两个项目组成的应用程序:commontheApp。 现在,theApp取决于common(使用dependency建模)。我面临的棘手的事情是:使用maven建模项目之间的XML依赖关系

common/src/main/env有XML文件,这将需要theApp运行时需要。

为了让事情更有趣,运行的分布都会有这样的结构:

  • bin/ - 有脚本
  • lib/ - 拥有由theAppcommon
  • dependencies/创建的罐子 - 拥有图书馆应用程序所依赖的罐子
  • config/ - 具有theAppcommon的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 ...