2017-01-20 24 views
1

2つの異なる環境で同じコードをサポートするMaven設定を作成しようとしています。 1つの環境はSeamを使用するJava 6で、もう1つはJEEを使用するJava 7です。Mavenでプロファイル、分類子、モジュールを正しく動作させるにはどうすればよいですか?

私のプロジェクトは、2つのプロファイルを設定した親のpomを持つマルチモジュールプロジェクトです。親ポンポンで興味深い部分:私は、彼らがすべてのJavaの同じビルドバージョンを使用していて、含まれて含まれているかいないはずです確認するために他のモジュールの特定のバージョンを参照する必要があり、このポンポンのサブモジュールで

<profiles> 
    <profile> 
     <id>JDK7</id> 
     <properties> 
      <jdk.version>1.7</jdk.version> 
      <profile.classifier>with-beans-xml</profile.classifier> 
     </properties> 

     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-compiler-plugin</artifactId> 
        <version>3.3</version> 
        <configuration> 
         <source>${jdk.version}</source> 
         <target>${jdk.version}</target> 
         <encoding>${project.build.sourceEncoding}</encoding> 
        </configuration> 
       </plugin> 

       <plugin> 
        <artifactId>maven-jar-plugin</artifactId> 
        <version>2.4</version> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
          <configuration> 
           <classifier>${profile.classifier}</classifier> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build>  
    </profile> 

    <profile> 
     <id>JDK6</id> 
     <properties> 
      <jdk.version>1.6</jdk.version> 
      <profile.classifier>without-beans-xml</profile.classifier> 
     </properties> 

     <!-- Identical parts left out for brevity --> 

     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-jar-plugin</artifactId> 
        <executions> 
         <execution> 
          <phase>package</phase> 
          <goals> 
           <goal>jar</goal> 
          </goals> 
          <configuration> 
           <classifier>${profile.classifier}</classifier> 
           <excludes> 
            <exclude>src/main/resources/META-INF/beans.xml</exclude> 
           </excludes> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build>  
    </profile> 
</profiles> 

beans.xml。

これは私がそれをやった方法です:

<parent> 
    <groupId>commons</groupId> 
    <artifactId>parent-pom</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent> 
<artifactId>some-module</artifactId> 

<dependencies> 
    <dependency> 
     <groupId>commons</groupId> 
     <artifactId>core</artifactId> 
     <version>${project.version}</version> 
     <classifier>${profile.classifier}</classifier> 
    </dependency> 
</dependencies> 

性質がうまく解決されますが、coreと呼ばれる依存性が上記プロジェクト全体のコア機能が含まれている他のモジュールへの参照を含む上記decalared。

他のモジュールにそのモジュールをインポートすると、coreの依存関係は解決されません。

これは私が期待してい依存関係の階層である:すなわちsome-other-moduleではない、

- some-module 
    - core 
     - some-other-module 

をしかし、別のモジュールへの依存関係としてコアを追加した後、私は明示的にそれがあまりにも利用できるようにするためsome-other-moduleを追加する必要があります参照から推移core

私はこれについて間違った方法をしていますか?異なるバージョンでうまく動作します。明示的に追加する必要があります。これは、他のユーザーがこれを使用するときに混乱を避けるためです。リクエストにより、

更新

は、ここでは完全な親ポンポンと推移の依存関係に問題が発生したモジュールの一つです。

親のpom.xml

<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> 
    <groupId>se.commons</groupId> 
    <artifactId>healthcheck-parent</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <name>healthcheck-parent-pom</name> 

    <modules> 
     <module>healthcheck-core</module> 
     <module>healthcheck-xsd</module> 
     <module>healthcheck-jms</module> 
     <module>healthcheck-db</module> 
     <module>healthcheck-filesystem</module> 
     <module>healthcheck-http</module> 
    </modules> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java.home>${JAVA_1_7_HOME}</java.home> 
    </properties> 

    <profiles> 
     <profile> 
      <id>JDK7</id> 
      <!-- <activation> --> 
      <!-- <activeByDefault>true</activeByDefault> --> 
      <!-- </activation> --> 
      <properties> 
       <!-- Build properties --> 
       <jdk.version>1.7</jdk.version> 
       <profile.classifier>with-beans-xml</profile.classifier> 

       <bom.version>2.0.0.R</bom.version> 
      </properties> 

      <dependencyManagement> 
       <dependencies> 
        <dependency> 
         <groupId>se.commons</groupId> 
         <artifactId>bom</artifactId> 
         <version>${bom.version}</version> 
         <scope>import</scope> 
         <type>pom</type> 
        </dependency> 
       </dependencies> 
      </dependencyManagement> 

      <build> 
       <plugins> 
        <plugin> 
         <artifactId>maven-compiler-plugin</artifactId> 
         <version>3.3</version> 
         <configuration> 
          <source>${jdk.version}</source> 
          <target>${jdk.version}</target> 
          <encoding>${project.build.sourceEncoding}</encoding> 
         </configuration> 
        </plugin> 

        <plugin> 
         <artifactId>maven-jar-plugin</artifactId> 
         <version>2.4</version> 
         <executions> 
          <execution> 
           <phase>package</phase> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
           <configuration> 
            <classifier>${profile.classifier}</classifier> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 

        <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>findbugs-maven-plugin</artifactId> 
         <version>3.0.1</version> 
         <configuration> 
          <effort>Default</effort> 
          <threshold>Default</threshold> 
          <xmlOutputDirectory>target/findbugs</xmlOutputDirectory> 
          <failOnError>true</failOnError> 
          <xmlOutput>true</xmlOutput> 
          <findbugsXmlOutput>true</findbugsXmlOutput> 
          <findbugsXmlWithMessages>true</findbugsXmlWithMessages> 
          <targetJdk>${jdk.version}</targetJdk> 
          <configuration> 
           <omitVisitors>FindReturnRef</omitVisitors> 
          </configuration> 
         </configuration> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>2.18.1</version> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-checkstyle-plugin</artifactId> 
         <version>2.15</version> 
         <executions> 
          <execution> 
           <goals> 
            <goal>checkstyle</goal> 
           </goals> 
           <phase>compile</phase> 
          </execution> 
         </executions> 
         <configuration> 
          <configLocation>${basedir}/../src/site/checkstyle.xml</configLocation> 
         </configuration> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-source-plugin</artifactId> 
         <version>2.2.1</version> 
         <executions> 
          <execution> 
           <id>attach-sources</id> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-javadoc-plugin</artifactId> 
         <version>2.8</version> 
         <executions> 
          <execution> 
           <id>attach-javadocs</id> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-site-plugin</artifactId> 
         <version>3.3</version> 
         <dependencies> 
          <dependency> 
           <!-- add support for ssh/scp --> 
           <groupId>org.apache.maven.wagon</groupId> 
           <artifactId>wagon-ssh</artifactId> 
           <version>2.4</version> 
          </dependency> 
         </dependencies> 
         <configuration> 
          <locales>sv</locales> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 


     <profile> 
      <id>JDK6</id> 
      <properties> 
       <!-- Build properties --> 
       <jdk.version>1.6</jdk.version> 
       <profile.classifier>without-beans-xml</profile.classifier> 

       <bom.version>2.0.0.R</bom.version> 
      </properties> 

      <dependencyManagement> 
       <dependencies> 
        <dependency> 
         <groupId>se.commons</groupId> 
         <artifactId>bom</artifactId> 
         <version>${bom.version}</version> 
         <scope>import</scope> 
         <type>pom</type> 
        </dependency> 
       </dependencies> 
      </dependencyManagement> 

      <build> 
       <resources> 
        <resource> 
         <directory>src/main/resources/META-INF</directory> 
         <excludes> 
          <exclude>beans.xml</exclude> 
         </excludes> 
        </resource> 
       </resources> 

       <plugins> 
        <plugin> 
         <artifactId>maven-compiler-plugin</artifactId> 
         <version>3.3</version> 
         <configuration> 
          <source>${jdk.version}</source> 
          <target>${jdk.version}</target> 
          <encoding>${project.build.sourceEncoding}</encoding> 
         </configuration> 
        </plugin> 

        <plugin> 
         <artifactId>maven-jar-plugin</artifactId> 
         <executions> 
          <execution> 
           <phase>package</phase> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
           <configuration> 
            <classifier>${profile.classifier}</classifier> 
            <excludes> 
             <exclude>src/main/resources/META-INF/beans.xml</exclude> 
            </excludes> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 

        <plugin> 
         <groupId>org.codehaus.mojo</groupId> 
         <artifactId>findbugs-maven-plugin</artifactId> 
         <version>3.0.1</version> 
         <configuration> 
          <effort>Default</effort> 
          <threshold>Default</threshold> 
          <xmlOutputDirectory>target/findbugs</xmlOutputDirectory> 
          <failOnError>true</failOnError> 
          <xmlOutput>true</xmlOutput> 
          <findbugsXmlOutput>true</findbugsXmlOutput> 
          <findbugsXmlWithMessages>true</findbugsXmlWithMessages> 
          <targetJdk>${jdk.version}</targetJdk> 
          <configuration> 
           <omitVisitors>FindReturnRef</omitVisitors> 
          </configuration> 
         </configuration> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <version>2.18.1</version> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-checkstyle-plugin</artifactId> 
         <version>2.15</version> 
         <executions> 
          <execution> 
           <goals> 
            <goal>checkstyle</goal> 
           </goals> 
           <phase>compile</phase> 
          </execution> 
         </executions> 
         <configuration> 
          <configLocation>${basedir}/../src/site/checkstyle.xml</configLocation> 
         </configuration> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-source-plugin</artifactId> 
         <version>2.2.1</version> 
         <executions> 
          <execution> 
           <id>attach-sources</id> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-javadoc-plugin</artifactId> 
         <version>2.8</version> 
         <executions> 
          <execution> 
           <id>attach-javadocs</id> 
           <goals> 
            <goal>jar</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 

        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-site-plugin</artifactId> 
         <version>3.3</version> 
         <dependencies> 
          <dependency><!-- add support for ssh/scp --> 
           <groupId>org.apache.maven.wagon</groupId> 
           <artifactId>wagon-ssh</artifactId> 
           <version>2.4</version> 
          </dependency> 
         </dependencies> 
         <configuration> 
          <locales>sv</locales> 
         </configuration> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 


    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-project-info-reports-plugin</artifactId> 
       <version>2.4</version> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-report-plugin</artifactId> 
       <version>2.18.1</version> 
      </plugin> 

      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>findbugs-maven-plugin</artifactId> 
       <version>3.0.1</version> 
       <configuration> 
        <effort>Default</effort> 
        <threshold>Default</threshold> 
        <xmlOutputDirectory>target/findbugs</xmlOutputDirectory> 
        <failOnError>true</failOnError> 
        <xmlOutput>true</xmlOutput> 
        <findbugsXmlOutput>true</findbugsXmlOutput> 
        <findbugsXmlWithMessages>true</findbugsXmlWithMessages> 
        <targetJdk>${jdk.version}</targetJdk> 
        <configuration> 
         <omitVisitors>FindReturnRef</omitVisitors> 
        </configuration> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-pmd-plugin</artifactId> 
       <version>3.4</version> 
       <configuration> 
        <targetJdk>${jdk.version}</targetJdk> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>2.7</version> 
       <reportSets> 
        <reportSet> 
         <reports> 
          <report>cobertura</report> 
         </reports> 
        </reportSet> 
       </reportSets> 
       <configuration> 
        <instrumentation> 
        </instrumentation> 
        <formats> 
         <format>xml</format> 
         <format>html</format> 
        </formats> 
        <instrumentation> 
         <includes> 
          <include>**/*.class</include> 
         </includes> 
        </instrumentation> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-javadoc-plugin</artifactId> 
       <version>2.8</version> 
      </plugin> 
     </plugins> 
    </reporting> 
</project> 

そしてここでは、依存関係としてコアを使用するモジュールの一つである:

<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>se.commons</groupId> 
     <artifactId>healthcheck-parent</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>healthcheck-jms</artifactId> 

    <dependencies> 
     <dependency> 
      <groupId>se.commons</groupId> 
      <artifactId>healthcheck-core</artifactId> 
      <version>${project.version}</version> 
      <classifier>${profile.classifier}</classifier> 
     </dependency> 

     <dependency> 
      <groupId>org.jboss.spec.javax.ejb</groupId> 
      <artifactId>jboss-ejb-api_3.1_spec</artifactId> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.jboss.spec.javax.jms</groupId> 
      <artifactId>jboss-jms-api_1.1_spec</artifactId> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.enterprise</groupId> 
      <artifactId>cdi-api</artifactId> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-core</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
</project> 

そして最後に、ここではコアのPOMです:

<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>se.commons</groupId> 
     <artifactId>healthcheck-parent</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
    </parent> 
    <artifactId>healthcheck-core</artifactId> 

    <dependencies> 
     <dependency> 
      <groupId>se.commons</groupId> 
      <artifactId>healthcheck-xsd</artifactId> 
      <version>${project.version}</version> 
      <classifier>${profile.classifier}</classifier> 
     </dependency> 

     <dependency> 
      <groupId>org.mockito</groupId> 
      <artifactId>mockito-core</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 
</project> 
+0

'healthcheck-xsd'は、' without-beans-xml'と 'with-beans-xml'の分類子に本当に存在しますか? – JimHawkins

+0

@JimHawkins私は自分のローカルリポジトリをチェックしました。これにはxsdの '-with-beans-xml'と' with-beans-xml'の両方のバージョンが含まれています。私はジェンキンスを経由してビルドし、リポジトリマネージャがそれを扱うことができることを確認しました。また、GAVも正しく見えます。 – hochas

+0

申し訳ありませんが、私は助けることができません。他の誰かができることを願っています... – JimHawkins

答えて

0

私は最終的に明確な答えを得られない同様の質問を見つけた後、上記の解決策をあきらめました。

標準GAVのみの分類器を使用して推移的依存性を解決することはできないようです。

プロジェクトを区別するために、別の案件IDに定住しました。

関連する問題