2012-07-05 3 views
2

다중 모듈 Maven 프로젝트로 C/S 프레임 워크를 만들었습니다. 그것은 "서버", "클라이언트"및 "일반"의 세 가지 모듈을 가지고 있습니다. "공통"모듈의 클래스는 "서버"와 "클라이언트"에서 모두 사용됩니다.Maven 다중 모듈 프로젝트 컴파일

그러나 독립형을 원하지 않습니다. common.jar. 대신 "공통"모듈의 클래스를 server.jarclient.jar에 직접 컴파일하려고합니다. 내가 만들 수있는 방법이 있니?

답변

0

사용 maven assembly plugin with pre-defined descriptor jar-with-dependencies

옵션 1 : 하여 '서버'프로젝트의 pom.xml에 다음을 포함 : 당신은 어떤이있는 경우

<build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.3</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

이것은뿐만 아니라 타사 종속성이 포함됩니다 .

옵션 2 : 이 옵션은 타사 라이브러리가있는 경우이를 제외하는 데 사용됩니다.

1. 다음과 같이 assembly.xml을 pom.xml의 동일한 디렉토리에 만듭니다.

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> 
    <id>custom</id> 
    <formats> 
     <format>jar</format> 
    </formats> 
    <dependencySets> 
     <dependencySet> 
      <outputDirectory>/</outputDirectory> 
      <useProjectArtifact>true</useProjectArtifact> 
      <unpack>true</unpack> 
      <scope>runtime</scope> 
      <includes> 
       <include>common</include> 
      </includes> 
     </dependencySet> 
    </dependencySets> 
</assembly> 

는 태그, 여기 <groupId>:<artifactId> 형식의 메시지 있어야합니다 포함 다만 artifactId를 난 당신의 groupId를 모르는로 '일반적인'언급한다. 하여 '서버'의 pom.xml에 다음 2.Include

:

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <descriptors> 
        <descriptor>assembly.xml</descriptor> 
       </descriptors> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

어셈블리 명령 (조립 : 단일)를 실행합니다.

0

이 작업을 수행하는 가장 좋은 방법은 maven-shade-plugin을 사용하는 것입니다.

은 서버/클라이언트 치어이 추가 : 당신은 server/ client 같은 항아리에 common 클래스와 함께 종료됩니다

<project> 
    ... 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-shade-plugin</artifactId> 
       <version>1.7.1</version> 
       <configuration> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>shade</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    ... 
</project> 

.

관련 문제