2016-08-09 15 views
0

現在、以下の依存関係を持つフラットな構造のプロジェクトがあります。Mavenプロジェクトの設定

Core --> core.jar 
      Service --> WAR 
      Domain --> domain.jar 
        Web -> WAR 

コアモジュールに基づいてcore.jarに依存し、Webはコアに依存するドメインモジュールからドメインjarに依存します。

私はこれをMavenに変換する予定です。使用する必要がある可能な最良の構造についてフィードバックが必要です。

私が持っている選択肢は、現在の構造体を保持し、各モジュールからjarファイルを生成し、それをmavenとの依存関係の一部として使用することです。または モジュールをある種の階層構造に再構成します。ここでいくつかの助けが必要です。

私はMavenのベストプラクティスを使用したいと思っています。

答えて

2

親プロジェクトを設定します。これを使用して、子プロジェクト間で依存関係を管理することができます。その後、jar/warアーティファクトをモジュールとして設定します。

各モジュールは、モジュールpomの標準<dependencies>を使用してその依存関係をソースします。

ので、これがあります。

parent-project [pom]: 
    modules: 
     core [jar] 
     domain [jar] - depends on core 
     service [war] - depends on core 
     web [war] - depends on domain 

をさらに具体的な例として、ここでは私のプロジェクトの一つのサンプルです:

親ポンポン

<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>org.example</groupId> 
    <artifactId>myproject-parent</artifactId> 
    <version>1.0.0</version> 
    <packaging>pom</packaging> 

    <name>myproject-parent</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <jersey.version>2.6</jersey.version> 
     <jsonunit.version>1.5.5</jsonunit.version> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <spring.version>4.1.4.RELEASE</spring.version> 
    </properties> 

    <modules> 
     <module>api-client</module> 
     <module>load-tests</module> 
     <module>regression-tests</module> 
    </modules> 


    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.2</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

    <reporting> 
     <plugins> 
      <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>cobertura-maven-plugin</artifactId> 
       <version>2.7</version> 
      </plugin> 
     </plugins> 
    </reporting> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-context</artifactId> 
       <version>${spring.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-test</artifactId> 
       <version>${spring.version}</version> 
       <scope>compile</scope> 
      </dependency> 

      <dependency> 
       <groupId>org.glassfish.jersey.core</groupId> 
       <artifactId>jersey-client</artifactId> 
       <version>${jersey.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.glassfish.jersey.media</groupId> 
       <artifactId>jersey-media-json-jackson</artifactId> 
       <version>${jersey.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.glassfish.jersey.connectors</groupId> 
       <artifactId>jersey-apache-connector</artifactId> 
       <version>${jersey.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.commons</groupId> 
       <artifactId>commons-lang3</artifactId> 
       <version>3.3.2</version> 
      </dependency> 
      <dependency> 
       <groupId>commons-cli</groupId> 
       <artifactId>commons-cli</artifactId> 
       <version>1.2</version> 
      </dependency> 
      <dependency> 
       <groupId>org.slf4j</groupId> 
       <artifactId>slf4j-api</artifactId> 
       <version>1.7.10</version> 
      </dependency> 

      <dependency> 
       <groupId>ch.qos.logback</groupId> 
       <artifactId>logback-classic</artifactId> 
       <version>1.1.2</version> 
      </dependency> 
      <dependency> 
       <groupId>junit</groupId> 
       <artifactId>junit</artifactId> 
       <version>4.11</version> 
      </dependency> 

      <dependency> 
       <groupId>org.thymeleaf</groupId> 
       <artifactId>thymeleaf</artifactId> 
       <version>2.1.4.RELEASE</version> 
      </dependency> 

      <dependency> 
       <groupId>org.mockito</groupId> 
       <artifactId>mockito-core</artifactId> 
       <version>2.0.5-beta</version> 
       <scope>test</scope> 
      </dependency> 

      <dependency> 
       <groupId>com.jayway.jsonpath</groupId> 
       <artifactId>json-path</artifactId> 
       <version>2.0.0</version> 
      </dependency> 
      <dependency> 
       <groupId>com.jayway.jsonpath</groupId> 
       <artifactId>json-path-assert</artifactId> 
       <version>2.0.0</version> 
       <scope>test</scope> 
      </dependency> 

      <dependency> 
       <groupId>org.freemarker</groupId> 
       <artifactId>freemarker</artifactId> 
       <version>2.3.22</version> 
      </dependency> 


      <dependency> 
       <groupId>net.javacrumbs.json-unit</groupId> 
       <artifactId>json-unit</artifactId> 
       <version>${jsonunit.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>net.javacrumbs.json-unit</groupId> 
       <artifactId>json-unit-fluent</artifactId> 
       <version>${jsonunit.version}</version> 
      </dependency> 
      <dependency> 
       <groupId>dom4j</groupId> 
       <artifactId>dom4j</artifactId> 
       <version>1.6.1</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

API-クライアント

API-クライアントに依存して最終的には、負荷テスト

と、

<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> 

    <artifactId>load-tests</artifactId> 
    <packaging>jar</packaging> 
    <parent> 
     <groupId>org.example</groupId> 
     <artifactId>myproject-parent</artifactId> 
     <version>1.0.0</version> 
    </parent> 

    <name>load-tests</name> 
    <url>http://maven.apache.org</url> 


    <dependencies> 
     <dependency> 
      <groupId>org.example</groupId> 
      <artifactId>api-client</artifactId> 
      <version>${parent.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>dom4j</groupId> 
      <artifactId>dom4j</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>jaxen</groupId> 
      <artifactId>jaxen</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
    ... snip ... 
     </plugins> 
    </build> 


</project> 
0

私が実証しようとしているものはあなたの選択に合っていると思います。

  1. 私が持っている
  2. モジュール

  3. として
を各ジャーと戦争を追加選択肢親としてPOMプロジェクトを作成し、各モジュールからjarファイルを生成し、それらを使用して現在の構造を維持することです依存関係の一部です。

関連する問題