2014-09-28 3 views
0

pom.xml 프로젝트를 컴파일하고 항아리로 패키지화하려면 그리고 실제로 그것은 comiples와 jar가 만들어집니다. - 문제는 클래스와 자바가 둘 다있는 jar 파일을 가지고 있기 때문에 내가 원하는 것입니다. 클래스 내부.maven-jar-plugin의 jar 파일에서 java 파일을 어떻게 제외합니까?

Java 파일은 어떻게 잃습니까? 나는 그들을 필요로하지 않는다.

<build> 
     <resources> 
      <resource> 
       <directory>src/main/java</directory> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 
     <finalName>api-interfaces</finalName> 
     <plugins> 
     <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <executions> 
        <execution> 
         <id>make-a-jar</id> 
         <phase>compile</phase> 
         <goals> 
          <goal>jar</goal> 
         </goals> 
        </execution> 
       </executions> 
      <configuration> 
      <excludes> 
      <exclude>*.properties</exclude> 
       <exclude>*.xml</exclude> 
       <exclude>sql/**</exclude> 
       <exclude>META-INF/**</exclude> 
       <exclude>*.jar</exclude> 
        <exclude>*.java</exclude> 
        <exclude>default-configs/**</exclude> 

      </excludes> 
      </configuration> 
     </plugin> 
     </plugins> 
    </build> 

this is the jar that i get

답변

5

여기 범인입니다. 특히이 솔루션은에 실제로 include/exclude examples

+0

했다

<resources> <resource> <directory>src/main/java</directory> <filtering>true</filtering> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> 

더 infos에 대한 maven resource plugin를 참조하십시오

이 사용 제외 명시 적으로 .java 파일을 표준 받는다는 레이아웃을 사용하고 src/main/resources 자원을 넣어, 또는 할 수 있습니다 자바를 제외 시키십시오 : * .java

+1

이것을'maven-jar-plugin' 설정에 추가 했나요? 이렇게하면 생성 된 jar 파일에서 파일 만 제거됩니다. 프로젝트의 리소스와 함께 작동하는 다른 플러그인은 여전히 ​​해당 플러그인을 볼 수 있습니다. 대부분의 경우, 이것은 차이를 만들지 않을 것이지만,주의해야 할 사항입니다. –

1

명시 적으로 compile 단계에 maven-jar-plugin:jar 목표를 바인딩에 대한 좋은 이유가있다 :

이 내가 만든 의 pom.xml은? 컴파일 단계는 "compile the source code of the project"이며 그 밖의 것은 없습니다. jar:jar 목표는 기본적으로 package 상에 바인딩 된 jar 포장 프로젝트에서

"이러한 JAR로, 그 배포 형식으로 컴파일 된 코드를 가지고 패키지."

resources:resouces 목표는 process-resources 단계에 바인딩 ", 대상 디렉토리로 포장 준비 리소스를 처리 복사합니다."

기본이 아닌 단계의 기본 목표를 바인딩하는 것이 Maven을 사용하는 것보다 Maven을 사용하는 것보다 낫습니다.

@SillyFreak가 대답 한대로 src/main/resources을 사용하면 POM에이 빌드 단계 정의가 전혀 필요하지 않을 것입니다. 명시 적으로 src/main/java에서 파일, 즉 .java 파일, 항아리에 포함되도록 지정이와

<resources> 
     <resource> 
      <directory>src/main/java</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 

:

관련 문제