2014-09-24 100 views
1

我正在嘗試安裝此項目的Maven構建,並希望得到一些幫助以獲得依賴性工作。Maven多個模塊依賴關係構建

Project 
    |--pom.xml 
    |--environments 
     |--pom.xml 
    |--configuration 
     |--pom.xml 
     |--idm 
       |--pom.xml 
    |--other 
     |--pom.xml 
     |--iam-scripts 
       |--pom.xml 

pom.xmlidm模塊如下:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>saas</groupId> 
     <artifactId>environments</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>../../environments</relativePath> 
    </parent> 

    <groupId>configuration</groupId> 
    <artifactId>idm</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-clean-plugin</artifactId> 
       <version>2.5</version> 
       <configuration> 
        <filesets> 
         <fileset> 
          <directory>${basedir}/modules/iam3/files</directory> 
          <includes> 
           <include>iam-scripts.tgz</include> 
          </includes> 
          <followSymlinks>false</followSymlinks> 
         </fileset> 
        </filesets> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.8</version> 
       <executions> 
        <execution> 
         <id>copy-ext-artifacts</id> 
         <phase>generate-sources</phase> 
         <goals> 
          <goal>copy</goal> 
         </goals> 
         <configuration> 
          <artifactItems> 
           <artifactItem> 
            <groupId>other</groupId> 
            <artifactId>iam-scripts</artifactId> 
            <version>1.0.0-SNAPSHOT</version> 
            <type>tar.gz</type> 
            <overWrite>true</overWrite> 
            <outputDirectory>${basedir}/modules/iam3/files</outputDirectory> 
            <destFileName>iam-scripts.tgz</destFileName> 
           </artifactItem> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
     <resources> 
      <resource> 
       <directory>${basedir}/modules</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>**/*.xml</include> 
        <include>**/*.properties</include> 
        <include>**/*.conf</include> 
        <include>**/*.yaml</include> 
        <include>**/*.varfile</include> 
        <include>**/*.sh</include> 
        <include>**/*.html</include> 
        <include>**/*.tmpl</include> 
        <include>**/*.tmpl.html</include> 
        <include>**/*.groovy</include> 
        <include>**/*.erb</include> 
       </includes> 
      </resource> 
      <resource> 
       <directory>${basedir}/modules</directory> 
       <filtering>false</filtering> 
       <includes> 
        <include>**/*.sql</include> 
        <include>**/*.service</include> 
        <include>**/*.war</include> 
        <include>**/*.groovy</include> 
        <include>**/*.gitkeep</include> 
        <include>**/*.zip</include> 
        <include>**/*.tar.gz</include> 
        <include>**/*.tgz</include> 
        <include>**/*.jar</include> 
        <include>**/*.pp</include> 
        <include>**/*.so</include> 
        <include>**/*.rpm</include> 
        <include>**/*.erb</include> 
       </includes> 
      </resource> 
     </resources> 
    </build> 
</project> 

pom.xmliam-scripts模塊如下:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
     <groupId>saas</groupId> 
     <artifactId>environments</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>../../environments</relativePath> 
    </parent> 

    <groupId>other</groupId> 
    <artifactId>iam-scripts</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <configuration> 
        <descriptors> 
         <descriptor> 
          src/assembly/conf.xml 
         </descriptor> 
        </descriptors> 
        <finalName>${project.artifactId}</finalName> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
     <resources> 
      <resource> 
       <directory>${basedir}/src/conf</directory> 
       <filtering>true</filtering> 
       <includes> 
        <include>**/*.xml</include> 
        <include>**/*.properties</include> 
        <include>**/*.conf</include> 
        <include>**/*.yaml</include> 
        <include>**/*.varfile</include> 
        <include>**/*.sh</include> 
        <include>**/*.html</include> 
        <include>**/*.tmpl</include> 
        <include>**/*.tmpl.html</include> 
        <include>**/*.groovy*</include> 
        <include>**/*.rptdesign</include> 
        <include>**/*.cps</include> 
       </includes> 
      </resource> 
      <resource> 
       <directory>${basedir}/src/conf</directory> 
       <filtering>false</filtering> 
       <includes> 
        <include>**/*.sql</include> 
        <include>**/*.service</include> 
        <include>**/*.war</include> 
        <include>**/*.gitkeep</include> 
        <include>**/*.zip</include> 
        <include>**/*.tar.gz</include> 
        <include>**/*.tgz</include> 
        <include>**/*.jar</include> 
        <include>**/*.pp</include> 
        <include>**/*.so</include> 
        <include>**/*.rpm</include> 
        <include>**/*.erb</include> 
        <include>**/*.md</include> 
        <include>**/*.js</include> 
       </includes> 
      </resource> 
     </resources> 
    </build> 
</project> 

所以我需要做的是從idm模塊我要打電話idm-scripts模塊構建。目前(如pom.xml所示),它所做的只是從存儲庫複製iam-scripts.tgz。但說我改變iam-scripts內的東西,而不是做一個手動清理版本iam-scripts我想從idm模塊內部構建。

所以步驟我現在做的是:

  • iam-scripts,我做mvn clean install -Denv=xxx
  • ,然後內idm,我做mvn clean install -Denv=xxx

我怎麼idm構建打電話乾淨建立iam-scripts

回答

1

讓我問一個問題,關於你的POM結構第一:您在當

什麼是...

  • configuration/pom.xml
  • other/pom.xml

...好。 ..

  • idm/pom.xml
  • iam-scripts/pom.xml

...有environments/pom.xml作爲他們的父母?無論如何,當建造idmiam-scripts時,這樣的情況就不會發生。 (順便說一句,我個人認爲通過relativePath跨目錄不清的多層次交叉引用的項目,我避免這樣的。)

在呼籲一個項目從內另一個我看來不適合多金屬氧酸鹽的聲明性質。雖然可能有一個插件,但我並不知道這可以實現這一點。 (哦,是的,我知道一:GMaven [加]雖然我不是在這裏推薦它。)

要建立idmiam-scripts一次我會使用一個共同的pom包裝父POM他們(也許您的Project可用於此),並將其添加爲其中的<module>

參見