Đâu là danh sách các thuộc tính Maven được xác định trước


125

Tôi biết có một danh sách tất cả các thuộc tính Maven được xác định trước (bạn biết như thế project.build.sourceEncoding, hoặc project.build.sourceDirectory). Tôi đã từng nhìn thấy danh sách nhưng tôi không thể tìm lại được.

Câu trả lời:


132

1
Thông thường, khi bạn chỉnh sửa pom.xml trong Intellij IDEA, nó giúp rất nhiều bằng cách cung cấp các tùy chọn cho bất cứ điều gì mà trông giống như một tài sản Maven (ví dụ ${...})
Kedar Mhaswade

mvn help: hiệu quả-pom là một công cụ tuyệt vời để khám phá các thuộc tính có sẵn. maven.apache.org/plugins/maven-help-plugin/ trộm
Peter Kahn

1
Đồng thời xem lại trang này trong wiki Maven: cwiki.apache.org/confluence/display/MAVEN/ Kẻ
Guss

Không bao gồm "mọi thứ" như thế [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.nhưng bao gồm hầu hết;)
rogerdpack


26

Nhìn vào "POM hiệu quả" có lẽ cũng sẽ giúp ích. Chẳng hạn, nếu bạn muốn biết đường dẫn dùng để làm gì${project.build.sourceDirectory}

bạn sẽ tìm thấy XML có liên quan trong POM hiệu quả, chẳng hạn như: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Cũng hữu ích - bạn có thể thực hiện đánh giá các thuộc tính theo thời gian thực thông qua thực thi dòng lệnh mvn help:evaluatetrong khi trong cùng một thư mục với POM.


Có vẻ một số từ cây XML và một số từ "chỉ các thuộc tính bình thường" FWIW ...
rogerdpack

11

Tôi nghĩ rằng nơi tốt nhất để tìm là Super POM .

Ví dụ, tại thời điểm viết, tham chiếu được liên kết hiển thị một số thuộc tính giữa các dòng 32 - 48.

Việc giải thích điều này là tuân theo XPath như một thuộc tính .được phân định.

Ví dụ:

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

Và:

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

Do đó, kết hợp chúng, chúng tôi tìm thấy:

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

(Để tham khảo (các) thư mục tài nguyên, hãy xem câu hỏi stackoverflow này )


<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

Tôi cảm thấy mệt mỏi khi nhìn thấy trang này với các tài liệu tham khảo cũ của nó cho các trang Codehaus không còn tồn tại nên tôi đã hỏi trong danh sách gửi thư của Người dùng Maven và nhận được một số câu trả lời cập nhật hơn.

Tôi muốn nói rằng câu trả lời tốt nhất (và có thẩm quyền nhất) có trong liên kết của tôi ở trên là câu trả lời của Hervé BOUTEMY:

đây là tài liệu tham khảo chính: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

nó không giải thích mọi lỗi có thể tìm thấy trong POM hoặc trong cài đặt, vì có rất nhiều thông tin có sẵn nhưng nó chỉ đến POM và mô tả cài đặt và giải thích mọi thứ không phải là POM hoặc cài đặt


3
Chính câu hỏi yêu cầu một liên kết, vì vậy tôi nghĩ rằng mối quan tâm của bạn bị đặt không đúng chỗ. Câu hỏi này không hỏi "Làm thế nào để tôi làm X" mà là "Tôi có thể tìm thấy X ở đâu".
Steve Cohen

2
Rất tiếc, bạn đã đúng - đó là câu hỏi không phù hợp với trang web này :-) Cảm ơn những người đứng đầu - đã bỏ phiếu để đóng
kleopatra

1
Tuy nhiên, đó là một câu hỏi cứ lặp đi lặp lại như đã được thừa nhận trong nhiều câu trả lời mà bài đăng trong danh sách gửi thư của tôi nhận được .. Vấn đề là Maven không tài liệu tốt về lĩnh vực này hoặc đủ chính xác. Cần có một trang hiển thị nổi bật trên trang web của họ cho loại thông tin này và không có. Thậm chí không rõ ràng ngay cả từ các liên kết này, rằng bất kỳ yếu tố nào của tham chiếu POM hoặc các địa điểm khác được đề cập đều có thể được chuyển đổi thành biểu thức $ {doped.notation} và được sử dụng trong tệp POM. Câu hỏi này do đó phục vụ một mục đích hữu ích và sẽ cần phải được cập nhật nếu nó được di chuyển lại.
Steve Cohen

1
yêu cầu tài nguyên bên ngoài nằm ngoài phạm vi của trang web này, nếu tất cả sẽ chơi theo quy tắc thì sẽ không có câu hỏi X nào ;-)
kleopatra

3
Đôi khi tôi không hiểu các quy tắc. Đó là một câu hỏi hoàn toàn hợp lệ và mọi người đã sẵn sàng trả lời nó trong quá khứ. Bằng cách dính vào các quy tắc như vậy, Stack Overflow cắt mũi của nó để làm cho khuôn mặt của nó.
Steve Cohen

3

Liên kết này hiển thị cách liệt kê tất cả các thuộc tính đang hoạt động: http : // skill Shared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-av Available.html

Tóm lại, thêm định nghĩa plugin sau vào POM của bạn, sau đó chạy 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>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.