2010-11-24 144 views
1

我正在構建一個由兩個項目組成的應用程序: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

回答

0

你需要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 ...