2012-01-04 3 views
14

저는 여러 기술을 배우기 위해 자바로 구성된 매우 간단한 블로그 엔진을 사용하고 있습니다.Maven에 Java 소스를 올바르게 포함시키는 방법은 무엇입니까?

Tech : Spring IoC, Hibernate, jUnit, GWT 및 Maven.

나는 두 메이븐 프로젝트를 생성 : https://github.com/LaurentT/BlogEngineCore

내 목표에

코드에 액세스 (핵심 하나에 대한 참조가) 핵심 프로젝트와 GWT 프로젝트는 다음입니다 : 내가 포함 할 Java 소스와 XML은 GWT 프로젝트가 JavaScript로 컴파일하기 위해 Java 소스를 필요로하기 때문에 중요합니다.

내가 <build> 요소에 다음 코드를 사용하려고 :
 <resources> 
     <resource> 
      <directory>src/main/java</directory> 
      <includes> 
       <include>**/*.java</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/resources</directory> 
      <includes> 
       <include>**/*.*xml</include> 
       <include>**/*.*properties</include> 
      </includes> 
     </resource> 
    </resources> 

이 추가하지만 지금은 심지어 그들이 걸려있다 마무리되지 전에 통과하고 마무리하는 데 사용 내 JUnit 테스트

...

나는 어떤 일이 일어나는지 전혀 모른다. 그래서 나는 자바 소스를 포함시킬 다른 방법이 있는지 또는 내가 잘못하고 있는지 알고 싶다.

단서가 있습니까?

+0

을 프로세스 자원은 자바 소스를 포함한 아무 상관이있다 ? – milan

+0

그 라인을 제거하면 테스트가 끝나고 통과하는 것입니다. 왜 그런지는 모르겠지만 그것이 무엇을하는지 : –

답변

11

디렉토리 경로 앞에 $ {basedir}을 포함 시키십시오.

<resource> 
    <directory>${basedir}/src/main/java</directory> 
</resource> 
+0

Sean의 솔루션은 두 개의 분리 된 JAR을 갖고 싶었지만 GWT 프로젝트가 하나의 jar (핵심 프로젝트)를로드하고 있기 때문에 여기에로드해야 할 JAR이 정말 필요합니다. 내 소스를 찾을 수있는 classpath에서. 이것은 매력처럼 작동했다. 마이크 덕분에 –

+0

이것은 소스 디렉토리의 모든 파일을 포함 할 것이다. 아마도'* .gwt.xml'과'client '와'shared' dirs. –

3

당신은 어떻게 멀티 모듈 프로젝트 here에 대한 설정 받는다는에 찾을 수 있습니다.

* gwt.xml 파일은 어디에 있습니까?

표시된 태그가 핵심 프로젝트의 pom.xml 파일의 일부인 경우

, 당신은 또한 <include>**/*.gwt.xml</include>을 추가해야합니다 :

<resource> 
     <directory>src/main/java</directory> 
     <includes> 
      <include>**/*.java</include> 
      <include>**/*.gwt.xml</include> 
     </includes> 
</resource> 
+0

이것은 나에게 도움이되었지만, src/main/resources의 모든 것이 jar에 포함되지 않도록 조심해야한다. 이것을 복사하고 src/main/리소스 (적절한 확장자/와일드 카드 포함) –

+0

이 예제에는 gwt 모듈에 필요한 파일 만 포함되어 있습니다. src 디렉토리에있는 모든 것을 맹목적으로 포함하는 것보다 낫습니다. 감사합니다. –

+0

당신은 @ClickUpvote를 사용하고 있습니다. 예, 이식성을 높이기 위해 편집되었습니다. 지금은 imho입니다. –

21

클리너 받는다는 방법은 별도의 소스 항아리를 연결하는 것입니다.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-source-plugin</artifactId> 
    <version>2.2.1</version> 
    <executions> 
    <execution> 
     <id>attach-sources</id> 
     <phase>verify</phase> 
     <goals> 
     <goal>jar-no-fork</goal> 
     </goals> 
    </execution> 
    </executions> 
</plugin> 

이제 핵심 프로젝트 항아리에 추가 핵심 프로젝트 소스를 참조 할 수 있습니다 GWT 프로젝트 :

<dependency> 
    <groupId>your.project</groupId> 
    <artifactId>core</artifactId> 
    <version>the.same.version</version> 
    <classifier>sources</classifier> 
    <scope>provided</scope><!-- use for compilation only --> 
</dependency> 
+0

고마워요! 한 병에서만이 작업을 수행 할 수있는 방법은 무엇입니까? 아니면 문제가되지 않습니까? –

+0

@LaurentT는 다른 답변을 찾습니다. 하지만 내가 말했듯이 그것은 덜 익숙하다. –

+1

이 답변에는'* .gwt.xml' 파일이 포함되어 있습니까? –

0

에서

는 빌드 using the maven source plugin에서 그것을 생성하는 표준 방법이 있습니다 다른 대답과는 달리, 내 접근 방식은 모듈 설명자와 모듈 설명자에 실제로 지정된 자바 소스 파일 만 모두 *.gwt.xml을 복사합니다. 또한 POM 및 모듈 설명자를 반복하지 않아도됩니다.

업데이트와 함께 치어 :

<plugins> 
     <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>gwt-maven-plugin</artifactId> 
      <version>2.7.0</version> 
      <executions> 
       <execution> 
        <goals> 
         <goal>resources</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 

하고 *를하며 .gwt.xml

<?xml version="1.0" encoding="UTF-8"?> 
<module> 

    <!-- Specify the paths for translatable code --> 
    <source path='shared' /> 

</module> 

조직 : codehaus.모조 : GWT-받는다는 - 플러그인 문서

GWT : 자원
설명 : 빌드 outputDirectory에 리소스로 GWT 자바 소스 코드와 모듈 설명을 복사합니다. 복사 할 원본을 탐지하기 위해 모듈 설명자로 더 세밀한 필터링을 사용하여 POM에 <resource>을 선언하는 대신에 읽을 수 있습니다.
구현 : org.codehaus.mojo.gwt.GwtResourcesMojo
언어 : 단계적으로 바운드 자바
: 당신은 왜 "JUnit 테스트가 걸려있다"생각

관련 문제