메이븐 project.build.directory


172

메이븐에서, 무엇을 project.build.directory의미합니까? 약간 혼란스러워 Maven 프로젝트의 소스 코드 디렉토리 또는 대상 디렉토리를 참조합니까?

답변:


224

수퍼 폼에서 해당 maven 속성을 찾을 수 있습니다.

여기에 항아리가 있습니다.

${M2_HOME}/lib/maven-model-builder-3.0.3.jar

7-zip 또는 다른 보관기로 항아리를 엽니 다 (또는 항아리 도구 사용).

로 이동

org/apache/maven/model

거기에 있습니다 pom-4.0.0.xml.

여기에는 "바로 가기"가 모두 포함됩니다.

<project>
    ...
    <build>
        <directory>${project.basedir}/target</directory>
        <outputDirectory>${project.build.directory}/classes</outputDirectory>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <testOutputDirectory>${project.build.directory}/test-classes</testOutputDirectory>
        <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory>
        <scriptSourceDirectory>src/main/scripts</scriptSourceDirectory>
        <testSourceDirectory>${project.basedir}/src/test/java</testSourceDirectory>
        <resources>
            <resource>
                <directory>${project.basedir}/src/main/resources</directory>
            </resource>
        </resources>
        <testResources>
            <testResource>
                <directory>${project.basedir}/src/test/resources</directory>
            </testResource>
        </testResources>
        ...
    </build>
    ...
</project>

최신 정보

로비를 한 후에 링크를pom-4.0.0.xml 추가 하고 있습니다. 로컬 jar 파일을 열지 않고도 속성을 볼 수 있습니다.


jar로 보관 된 파일 대신 온라인 참조를 제안합니다. 이것은 : maven.apache.org/ref/3.0.3/maven-model/maven.html
khmarbaise

18
@khmarbaise 물론 그것은 좋지만 project.build.directory예를 들어 기본값을 보여주지는 않습니다 . 그것이 내가 보여주고 싶었던 것입니다.
maba

github 미러를 사용하면 github.com/apache/maven-3/blob/trunk/maven-model-builder/src/… 와 같은 특정 라인 번호에 연결할 수 있습니다. 그렇지 않으면 svn에 있습니다 : svn.apache.org/repos/asf / maven / maven-3 / trunk /…
마틴 엘리스

@MartinEllis 좋아요, 링크로 답변을 업데이트했습니다. 감사합니다!
maba

github.com/apache/maven 에서 maven repo의 소스를 검색했습니다 . 적중 횟수가 상대적으로 적습니다 (9). 그 속성을 직접 설정하는 것은 없습니다. 어딘가에 설정해야합니다! 이 URL은 내가 본 검색 결과를 보여줍니다 : github.com/apache/maven/…
PatS

44

최상위 출력 디렉토리 (기본적으로는 target)를 가리 킵니다 .

https://web.archive.org/web/20150527103929/http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide

편집 : 지적했듯이 Codehaus는 슬프게도 실종되었습니다. Sonatype에서 이러한 속성에 대한 자세한 내용을 확인할 수 있습니다.

http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-properties.html#resource-filtering-sect-project-properties

Maven에서 출력 디렉토리를 참조하려는 경우 target / classes 와 같은 리터럴 값을 사용해서는 안됩니다 . 대신 이러한 디렉토리를 참조하려면 특성 참조를 사용해야합니다.

    project.build.sourceDirectory
    project.build.scriptSourceDirectory
    project.build.testSourceDirectory
    project.build.outputDirectory
    project.build.testOutputDirectory
    project.build.directory

sourceDirectory, scriptSourceDirectory그리고 testSourceDirectory프로젝트의 소스 디렉토리에 대한 액세스를 제공합니다. outputDirectorytestOutputDirectory메이븐 바이트 코드 또는 다른 빌드 출력을 넣어 것입니다 디렉토리에 대한 액세스를 제공합니다. directory이러한 모든 출력 디렉토리를 포함하는 디렉토리를 참조하십시오.


1
codehause.org 호스팅이 종료되었으며이 링크는 더 이상 작동하지 않습니다.
Bartosz Firyn

예, 진실하고 슬프습니다. 작업 링크로 업데이트하고 링크 된 페이지의 관련 섹션을 인용했습니다.
sdouglass 2016 년

7
... so project.base.dir는 pom.xml이있는 프로젝트의 루트 디렉토리를 가리 킵니다. 이것이 바로 project.build.directoryMaven이 정의한 이후의 이유 입니다 ${project.basedir}/target. 고마워, 나는 이것을 몰랐다.
evaldeslacasa

1
사실 인 것 같지만이 정보를 어떻게 얻었습니까? "project.base.dir은 pom.xml이있는 프로젝트의 루트 디렉토리를 가리 킵니다." 이 정의는 어디에서 볼 수 있습니까?
qartal

2
프로젝트를 가정하는 것은 프로젝트-A라고하며, 프로젝트-A 아래, pom.xml 파일은 다음 선언 ${project.build.sourceDirectory}포인트 project-A/src/main/java, ${project.build.scriptSourceDirectory}포인트 project-A/src/main/scripts, ${project.build.testSourceDirectory}포인트 project-A/src/test/java, ${project.build.directory}포인트 project-A/target, ${project.build.directory}포인트 project-A/target/classes, ${project.build.testOutputDirectory}포인트를 project-A/target/test-classes.
SC30

4

프로젝트의 값에 대한 최신 답변을 찾을 수 있습니다.

mvn3 help:effective-pom

명령을 실행하고 <build> ... <directory>결과에서 유효 폼 의 태그 값을 찾습니다 . 덮어 쓰지 않으면 Super POM의 값이 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.