2009-10-20 7 views
1

프로젝트에서 속성 및 XML 파일을 포함하는 리소스 디렉토리 (src/main/resources)가 있습니다.Eclipse에서 Maven2 프로젝트를 가져올 때 문제가 발생했습니다.

속성 파일 만 필터링하고 다른 종류의 파일 (예 : XML)은 필터링하지 않습니다. 따라서, 나는이를 설정 한 내 pom.xml :

<build> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.properties</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>false</filtering> 
      <excludes> 
       <exclude>**/*.properties</exclude> 
      </excludes> 
     </resource> 
    </resources> 
</build> 

내가 메이븐 2 패키지 명령을 실행할 때이 잘 작동하고는, 즉, XML 및 속성을 두 파일이 내 마지막 JAR에 포함되며, 전용 속성의 파일이왔다 거르는.

그러나이 프로젝트를 Eclipse에 포함하려는 경우 mvn eclipse:eclipse 명령을 실행하고 프로젝트를 가져올 때 프로젝트 속성에 선언 된 소스에 문제가 있습니다. 탭 "소스"내 프로젝트에 대한 이클립스의 "자바 빌드 경로"옵션에서

, 나는 src/main/resources 디렉토리를 볼 수 있지만, Eclipse는 모든 자바 파일 (Excluded: **/*.java)을 제외 말하고 포함 필터를 추가 속성 파일 (Included: **/*.properties). 내 모든 XML 파일은 JAR에없는 것처럼

<classpathentry kind="src" path="src/main/resources" including="**/*.properties" excluding="**/*.java"/> 

이 방법, 이클립스에 의해 만들어진 JAR가 정확하지 : 생성 된 .classpath 파일에서

, 나는이 줄을 얻을.

이 문제를 어떻게 해결할 수 있습니까?


편집이 page에 대하여, 나는이를 추가 한 내 pom.xml :

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <sourceIncludes> 
        <sourceInclude>**/*.xml</sourceInclude> 
       </sourceIncludes> 
      </configuration> 
     </plugin> 
    </plugins> 

그러나, 적절한 정보와 수정되지 않습니다 생성 된 .classpath ...


다시 수정하십시오.

이전 편집의 추가 사항은 Eclipse 플러그인의 2.6.1 이상 버전에서만 작동하며 2.6 버전에서는 작동하지 않습니다. 그래서 저는 2.7 버전을 사용해 보았습니다. 그러나, 나는 포함 속성을 정의하지 이클립스 플러그인을 강제하는 방법을 모른다 :

Request to merge when 'filtering' is not identical. Original=resource src/main/resources: output=target/classes, include=[**/*.properties], exclude=[**/*.java], test=false, filtering=true, merging with=resource src/main/resources: output=target/classes, include=[], exclude=[**/*.properties|**/*.java], test=false, filtering=false 
+0

난 당신이 코드에서 실수를 생각 - 둘 다 포함 할합니다. '* .properties' 파일을 제외 하시겠습니까? –

+0

실수가 아닙니다. 리소스의 두 가지 하위 집합이 있습니다. s : 첫 번째 것은'properties' 파일과 * filter *만을 포함합니다. 두 번째 것은'properties' 파일 만 제외하고 *는 그것들을 필터링하지 않습니다. 이것은'src/main/resources'에있는 모든 파일을 포함하고 그 중 일부만을 필터링하는 유일한 방법입니다 ... – romaintaz

+0

맞습니다. 지금 당장 받으십시오. –

답변

1

maven Eclipse 플러그인 2.6, 2.5.1, 2.7 및 2에 대한 테스트를 수행했습니다.8-SNAPSHOT으로 예상되는 결과를 얻지 못했습니다.

내가 찾을 수 있었던 유일한 해결책은 필터링하지 않으려는 리소스에 대해 다른 디렉토리를 사용하는 것입니다. 이 같은 것을 :

... 
    <build> 
    <resources> 
     <resource> 
      <directory>src/main/resources1</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.properties</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources2</directory> 
      <filtering>false</filtering> 
      <includes> 
       <include>**/*.xml</include> 
      </includes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.6</version> 
     </plugin> 
    </plugins> 
    </build> 

나는 이것이 추한 것에 동의한다. 하지만 최소한 다음 항목이있는 .classpath가 생성됩니다.

<classpathentry kind="src" path="src/main/resources1" including="**/*.properties" excluding="**/*.java"/> 
    <classpathentry kind="src" path="src/main/resources2" including="**/*.xml" excluding="**/*.java"/> 

이렇게하면 Tomcat에 배포 할 수 있습니다.

그런데 플러그인이 작동하지 않기 때문에 2.7 버전을 사용하지 않을 것입니다 (this thread 참조). 버전 2.6에서는 예상되는 출력이 나오지 않을 수도 있지만 적어도 작동합니다.

0

I : 나는 mvn eclipse:eclipse 명령을 실행하면

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-eclipse-plugin</artifactId> 
      <version>2.7</version> 
      <configuration> 
       <sourceIncludes> 
        <sourceInclude>*</sourceInclude> 
       </sourceIncludes> 
      </configuration> 
     </plugin> 
    </plugins> 

을, 나는 다음과 같은 오류가 발생합니다 Eclipse에서 외부 도구로 mvn package 목표 중 하나를 제안하십시오. 나는 이클립스가 복잡한 Maven 워크 플로우를 처리 할 수 ​​있다고 생각하지 않는다.

m2eclipse plugin (내가 사용하고 적극 권장하는)은 troubles with complex workflows입니다.

0

Eclipse 및 Maven 속성을 사용하여 build into different directories을 사용하십시오. 이제 Eclipse를 사용하여 코드를 신속하게 개발하고 Maven을 사용하여이를 JAR로 전개 할 수 있습니다.

+0

나는 당신의 요점을 정말로 얻지 못한다. 어떻게하면 내 문제를 해결할 수 있을까요? – romaintaz

+0

Eclipse를 사용하여 JAR을 빌드하지 마십시오. Maven을 사용하십시오. 메이븐 (Maven) –

+0

Maven을 사용하여 JAR을 빌드합니다. 문제는 내 라이브러리가 웹 응용 프로그램에 대한 J2EE 모듈 종속성으로 사용된다는 것입니다. 따라서 Eclipse 내에서 Tomcat에 webapp을 게시 할 때 Eclipse에서 만든 JAR 파일에는 XML 파일이 포함되어 있지 않습니다. – romaintaz

2

음, maven-eclipse-plugin은 버전 2.5를 사용하고 있습니다. 우리가 찾은 해결책은 다른 폴더에 복사하는 것입니다. 기본 필터링을 사용하기 위해 기본 필터링을 사용하지만 특별한 경우 프로필이 있습니다. 다음은이 프로필 받는다는 - 이클립스 = 플러그인 구성입니다 : 당신은 수정해야합니다 물론

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>copy-resources-step1</id> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <phase>initialize</phase> 
      <configuration> 
       <outputDirectory>${project.build.directory}/for-eclipse/resources</outputDirectory> 
       <resources> 
        <resource> 
         <directory>${basedir}/src/main/resources</directory> 
         <filtering>true</filtering> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 

     <execution> 
      <id>copy-resources-step2</id> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <phase>initialize</phase> 
      <configuration> 
       <outputDirectory>${basedir}/src/main/resources</outputDirectory> 
       <resources> 
        <resource> 
         <directory>${project.build.directory}/for-eclipse/resources</directory> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

귀하의 요구에 대한 섹션을 포함/제외는

관련 문제