2014-09-24 5 views
1

Я пытаюсь настроить эту сборку Maven для проекта и хочу получить некоторую помощь для работы зависимости.Maven многопользовательская сборка зависимостей

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

pom.xml для idm модуля ниже:

<?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.xml для iam-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 как их родителей? Так что оставлять их при строительстве idm или iam-scripts в любом случае. (Кстати, я лично считаю, перекрестными ссылки проектов через relativePath через несколько уровней каталогов неясных и я избегаю таких.)

На моем взгляде вызывающего проекта, из других, не вписываюсь в декларативности РОМА , Хотя может быть плагин, я не знаю, что это достигается. (Ах, да, я знаю одно:. GMaven [Плюс] Хотя я не рекомендовал бы его здесь.)

Чтобы построить idm и iam-scripts я сразу бы использовать общий pom упакованного родительский POM для них (возможно, ваш Project может быть использован для этого) и добавьте их как <module> s.

См

Смежные вопросы