미리 정의 된 Maven 속성 목록은 어디에 있습니까?


125

미리 정의 된 모든 Maven 속성 목록이 있음을 알고 있습니다 ( project.build.sourceEncoding또는 project.build.sourceDirectory). 한 번 목록을 보았지만 다시 찾을 수 없습니다.

답변:


132

1
일반적하게 IntelliJ IDEA에서 때 편집의 pom.xml, 그것은 아무것도 옵션을 제공하여 크게하는 데 도움이 메이븐 속성 같은 외모 (예 ${...})
게달 Mhaswade

mvn help : effective-pom은 사용 가능한 속성을 찾는 데 유용한 도구입니다. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn

1
또한 Maven 위키에서이 페이지를 검토하십시오. cwiki.apache.org/confluence/display/MAVEN/…
Guss

처럼 "모든"은 포함되지 않습니다 [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.하지만 대부분 포함)
rogerdpack


26

"유효한 POM"을 보면 아마도 도움이 될 것입니다. 예를 들어, 경로가 무엇인지 알고 싶다면${project.build.sourceDirectory}

효과적인 POM에서 다음과 같은 관련 XML을 찾을 수 있습니다. <project> <build> <sourceDirectory>/my/path</sourceDirectory>

또한 도움이 mvn help:evaluate됩니다. POM과 동일한 디렉토리에있는 동안 명령 줄을 실행하여 속성을 실시간으로 평가할 수 있습니다 .


일부는 XML 트리에서 온 것으로
보이고

11

가장 좋은 곳은 Super POM 이라고 생각합니다. .

예를 들어, 작성시 링크 된 참조는 라인 32-48 사이의 일부 특성을 보여줍니다.

이것에 대한 해석은 XPath를 . 구분 된 속성 입니다.

예를 들어,

${project.build.testOutputDirectory} == ${project.build.directory}/test-classes

과:

${project.build.directory} == ${project.basedir}/target

따라서 그것들을 결합하면 다음을 발견 할 수 있습니다.

${project.build.testOutputDirectory} == ${project.basedir}/target/test-classes

(리소스 디렉토리를 참조하려면 이 stackoverflow 질문을 참조하십시오 )


<project>
    <modelVersion>4.0.0</modelVersion>
    .
    .
    .
    <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>

6

필자는 폐지 된 Codehaus 페이지에 대한 부실한 참조로이 페이지를 보는 것에 지쳤으므로 Maven Users 메일 링리스트 에 요청하여 최신 답변을 얻었습니다.

위 링크에 포함 된 가장 좋은 (그리고 가장 권위있는) 답변은 Hervé BOUTEMY가 제공 한 답변이라고합니다.

핵심 참조는 다음과 같습니다. http://maven.apache.org/ref/3-LATEST/maven-model-builder/

사용 가능한 정보가 많지만 POM 및 설정 설명자를 가리키고 POM 또는 설정이 아닌 모든 것을 설명하기 때문에 POM 또는 설정에서 찾을 수있는 모든 것을 설명하지 않습니다


3
바로 질문은 링크를 요구하므로 귀하의 우려가 잘못되었다고 생각합니다. 이 질문은 "어떻게 X를합니까?"를 묻지 않고 "어디에서 X를 찾을 수 있습니까?"를 묻습니다.
Steve Cohen

2
죄송합니다, 당신 말이 맞아요 - 그것은이 사이트에 맞지 않는 질문 :-) 덕분에 머리까지가 - 닫 투표
클레오 파트라

1
그럼에도 불구하고 그것은 메일 링리스트 포스트가받은 많은 답변에서 쉽게 인정 된 것처럼 계속해서 제기되는 질문입니다. 요점은 Maven이이 영역을 잘 또는 간결하게 문서화하지 않았다는 것입니다. 이런 종류의 정보에 대해서는 웹 사이트에 눈에 띄게 표시되는 페이지가 있어야합니다. 이러한 링크에서도 POM 참조의 요소 또는 언급 된 다른 위치를 $ {dotted.notation} 표현식으로 변환하여 POM 파일에서 사용할 수 있다는 것은 명확하지 않습니다. 따라서이 질문은 유용한 목적으로 사용되며 다시 이동하면 업데이트해야합니다.
Steve Cohen

1
모든 규칙을 플레이 할 경우 외부 리소스를 요구하는이 사이트의 범위 꺼져, 어떤 없을 것입니다 여기서 X의입니다 ;-) 질문
클레오 파트라

3
규칙을 이해하지 못하는 경우가 있습니다. 완벽하게 유효한 질문이며 사람들은 과거에 기꺼이 대답 해 왔습니다. 이러한 규칙을 지키기 위해 Stack Overflow는 코를 잘라 얼굴을 자극합니다.
Steve Cohen

3

이 링크는 모든 활성 속성을 나열하는 방법을 보여줍니다. http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

요약하면, 다음 플러그인 정의를 POM에 추가 한 후 다음을 실행하십시오 mvn install.

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <phase>install</phase>
            <configuration>
                <target>
                    <echoproperties />
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.