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

时间:2010-11-24 14:12:04

标签: maven-2

我正在构建一个由两个项目组成的应用程序:commontheApp。 现在,theApp取决于common(使用dependency建模)。我面临的棘手问题是:

common/src/main/env运行时需要theApp中的XML文件。

为了让事情变得更有趣,run的分布将具有以下结构:

  • bin/ - 有脚本
  • lib/ - 由theAppcommon
  • 创建的广告罐
  • dependencies/ - 具有应用所依赖的库jar
  • config/ - 包含theAppcommon
  • 的xml文件

我已经完成了,除了我还在寻找一种在theApp的POM中编写maven目标的方法,可以将common的XML文件放在{{1}中}。

有什么想法吗?

谢谢, Harshath

1 个答案:

答案 0 :(得分:0)

你需要maven程序集和依赖插件。在common / src / main / resources / assemblies / 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 ...