2017-05-04 9 views
1

Windows 10에서 Maven 3.3.9를 사용하고 있습니다. 다중 POM 프로젝트가 있고 Maven 프로젝트 전체에 일부 테스트 리소스를 공유하려고합니다. 우리 모두가 알 수 있듯이 src/test/*의 파일은 배포 JAR에 포함되지 않으므로 다른 프로젝트에서이 프로젝트를 공유 할 수 있도록 테스트 리소스 (및 리소스 이름이있는 Java 클래스) 용으로 별도의 프로젝트를 만들었습니다.Maven 빌드 후 클래스 파일 누락

  • src/main/java/com/example/foo/test/FooTestResources.java
  • src/main/resources/com/example/foo/test/resource.txt

솔직한 오른쪽 : 그림을 위해서

는의는 foo-test 프로젝트의 두 개의 파일이 있다고 가정 해 봅시다? Maven에서 프로젝트를 빌드 할 때 그 결과 JAR 파일 com/example/foo/test/resource.txt 만 포함합니다! com/example/foo/test/FooTestResources.class에있을 것으로 예상되는 클래스 파일이 누락되었습니다.

실제로이 파일은 target 디렉토리에도 없습니다. 따라서 Maven이 소스 파일을 컴파일하지 않는 것입니다. 내 프로젝트 디렉토리를 FooTestResources.class에 대해 검색했지만 존재하지 않습니다. 소스 코드 파일 FooTestResources.java 만 있습니다.

Eclipse 4.6.3에서 프로젝트를 빌드 할 때 Eclipse는 예상대로 파일 target/com/example/foo/test/FooTestResources.class을 생성합니다. 내가 mvn clean install을하면 사라집니다.

무슨 일입니까?

+0

그건 이상한 일입니다. ''pom.xml''을 게시 할 수 있습니까? 일부는 거기에 마술이 냄새가 그 식 빌더에 의해 무시되고있어, 따라서 차이. – f1sh

+0

실제 pom.xml을 보지 않고서는 내 생각에 소스 디렉토리를 다른 것으로 설정하는 pom 파일이 있습니다. mvn 명령에'-X'를 추가하여 실제로'src/main/java' 아래에 어떤 것이 든 컴파일되는지 확인하십시오. – jingx

답변

0

발견! 여기 이야기가 있습니다.

한 번에 두 개의 JAR이 필요한 프로젝트가있었습니다. 하나의 JAR은 대부분의 자원과 함께 소스 코드를 포함하고 다른 하나의 JAR은 단일 자원을 포함합니다. 두 개의 프로젝트 (그리고 두 개의 Git 리포지토리)를 만드는 대신, 나는 게으르려고 노력했고 두 개의 POM을 만들었습니다. 하나의 POM은 하나의 리소스를 제외하고는 모든 것을 정상적으로 구축했으며 다른 하나는 모든 소스 파일을 무시하고 POM 파일을 생성했습니다.

당신은 전체 기술 여기에 세부 사항 읽을 수 있습니다 : 대부분의 관리 방법으로 판명하지 않았다 여러 가지 이유를 들어 https://globalmentor.atlassian.net/browse/CLOGR-3

, 그래서 그들은해야로서 나는, 별도의 프로젝트 저장소에 두 리딩을 분할 시작되었습니다.

불행히도, 어딘가에 나는이 POM 중 하나에서 중요한 라인을이 POM으로 복사했습니다.

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <configuration> 
       <skipMain>true</skipMain> 
       <skip>true</skip> 
      </configuration> 
     </plugin> 

skipMain은 그것을 무엇이다. 바이 바이 파일. (분명히 Eclipse는이 섹션의 세부 사항을 무시한다.)

필자도 테스트를 생략했다. 나는 기본적으로 잘못된 POM에서 복사 한 것입니다. POM에는 더 이상 존재하지 않습니다.