2016-08-09 3 views
0

현재 다음과 같은 종속성을 가진 플랫 구조의 프로젝트가 있습니다.Maven 프로젝트 설정

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

거의 모든 코어 모듈에서 core.jar를에 따라, 웹은 코어에 달려있다 도메인 모듈에서 도메인 항아리에 따라 달라집니다.

이 파일을 Maven으로 변환 할 계획이며 가능한 최상의 구조를 사용해야합니다.

내가 가진 선택 현재 구조를 유지 한 다음 각 모듈에서 jar 파일을 만들고이를 maven과의 종속성의 일부로 사용하는 것입니다. 또는 모듈을 구조의 일종으로 구조화하십시오. 여기서 도움이 필요합니다.

나는 Maven의 모범 사례를 사용하고 싶습니다.

답변

2

하위 프로젝트간에 관리되는 종속성을 유지하는 데 사용할 수있는 상위 pom을 설정합니다. 그런 다음 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 클라이언트에 따라 마지막으로로드 테스트 57,

하고,

<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. 가 모듈로 내가 가진

의 선택을 각 항아리와 전쟁을 추가 부모로서 POM 프로젝트를 만들기로를 다음 현재 구조를 유지하는 각 모듈에서 jar 파일을 생성하고 사용하는 것입니다 종속성의 일부.