Maven이 컴파일하고 빌드 jar에 포함 할 추가 소스 디렉토리를 추가하는 방법은 무엇입니까?


95

src / main / java 외에도 빌드 프로세스에 포함하려는 src / bootstrap 디렉토리를 추가합니다. 즉, maven이 소스를 컴파일하고 빌드에 포함하기를 원합니다. 어떻게!?


간단한 질문 : 소스 코드를 src / main / java로 옮기지 않는 이유는 무엇입니까? 또는 코드를 포함하는 별도의 Maven 프로젝트 / 모듈을 만들고 종속성으로 정의하십시오.
khmarbaise

7
제 경우에는 생성 된 소스 폴더를 추가해야합니다.이 폴더는 타겟 내부에 상주하는 것을 선호합니다.
djjeck

또한, 하나의 장소에 할 수 있습니다 통합 - 테스트 이외의 디렉토리에있는 src/{main,test}/이야기로 여기
Y2K-하기 Shubham

이것은 또한 여기에서 논의되었습니다 : stackoverflow.com/q/270445/1061929
bjmi

답변:


144

Build Helper Plugin을 사용할 수 있습니다 . 예 :

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

1
Eclipse는 이러한 폴더 buildpath를 누구에게나 s 중 하나로 인식합니까 ? 왜냐하면 그것은 나를위한 것이 아니기 때문입니다. FWIW, m2e프로젝트를 가져 오는 데 사용 합니다.
mystarrocks 2014 년

멋진 대답은, 그냥 ... 당신이 위의 라인을 받는다는-컴파일러 플러그인을 교체해야, 명확하게
콜린

IntelliJ에서도 작동합니다.
Alexander Klimetschek

1
Eclipse는 빌드 도우미 커넥터 인 m2e 용 플러그인을 설치하도록 요청했습니다. 내가 해냈고 수명주기 오류가 사라졌습니다.
Alexis Dufrenoy

1
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)이 오류가 발생 함
Katie

35
참고 :이 솔루션은 Java 소스 파일을 target / classes 디렉토리로 이동하고 소스를 컴파일하지 않습니다.

다음으로 업데이트 pom.xml-

<project>   
 ....
    <build>
      <resources>
        <resource>
          <directory>src/main/config</directory>
        </resource>
      </resources>
     ...
    </build>
...
</project>

2
NetBeans가 매력처럼 포착했습니다. :)
Attila 2013

1
하지만 Eclipse 빌드 경로에 추가 된 폴더에 대한 ** 제외를 제거해야하는 것 같습니다 :(
Dormouse

@Dormouse 설명해 주시겠습니까?
Saikat 2014 년

1
IntelliJ에서는 작동하지 않습니다. <resource>"Resource"폴더로 표시되지만 "Source"폴더로는 표시되지 않습니다. 예를 들어 그 안에 Java 소스 파일을 컴파일하지 않습니다.
Alexander Klimetschek

4
이 솔루션은 대상 / classes 디렉토리에 Java 소스 파일을 이동합니다 것이다 컴파일 할 소스를
스테판 Haberl에게

12

http://maven.apache.org/guides/mini/guide-using-one-source-directory.html

<build>
<sourceDirectory>../src/main/java</sourceDirectory>

또한 참조

여러 src 디렉토리로 Maven 컴파일


7
이것은 기본 src / main / java 디렉토리를 대체합니다. 여러 디렉터리를 원할 경우 기본 디렉터리도 지정해야합니다.
Natix

2
문제는 여러 소스 디렉토리를 추가하는 방법이며 요청 된 것과 반대되는 하나의 소스 디렉토리 만 추가하는 방법을 제안하고 있습니다.
João Matos

1

최신 Maven 버전 (3) 및 최신 버전의 maven 컴파일러 플러그인 (3.7.0) build-helper-maven-plugin을 사용하면 빌드에 추가 할 소스 코드가 포함 된 폴더가있는 경우 소스 폴더를 target폴더 또는 하위 폴더입니다.
컴파일러 maven 플러그인은이 폴더가 포함 된 디렉토리에 관계 없이이 폴더 안에있는 모든 Java 소스 코드를 컴파일하는 것 같습니다.
예를 들어 일부 (생성 또는 NO)의 소스 코드를 갖는 target/a, target/generated-source/foo컴파일없고 outputDirectory 첨가 될 것이다 target/classes.


-1

다음과 같이 빌드 프로세스에 대한 디렉토리를 추가 할 수 있습니다.

    ...
   <resources>
     <resource>
       <directory>src/bootstrap</directory>
     </resource>
   </resources>
   ...

src / main / java는 pom.xml에서 언급 할 필요가없는 기본 경로입니다.


2
왜 사람들을 비추천합니까? 기본적으로 saiky0 (upvotes가 있음)과 동일한 답변이지만 이전에?
Friso 2015 년

15
@Friso가 올바르지 않기 때문에. 리소스 디렉토리를 추가하면 리소스가 추가됩니다 (파일이에 복사 target/classes되지만 컴파일되지는 않음). 이 질문은됩니다 파일을 보유하고 소스 디렉토리에 추가하는 방법에 대한 것입니다 컴파일target/classes하지 복사합니다.
Darth Android
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.