Где находится список предопределенных свойств Maven


125

Я знаю, что есть список всех предопределенных свойств Maven (вы знаете project.build.sourceEncoding, или project.build.sourceDirectory). Однажды я видел список, но больше не могу его найти.

Ответы:


132

Вы имеете в виду это?

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

Я также переместил его содержимое в репозиторий GitHub:

https://github.com/cko/predefined_maven_properties/blob/master/README.md


1
Обычно, когда вы редактируете pom.xml в Intellij IDEA, это очень помогает, предоставляя параметры для всего, что выглядит как свойство Maven (например ${...})
Кедар Мхасвейд

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}

вы найдете соответствующий XML в действующем POM, например: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Также полезно - вы можете выполнять оценку свойств в реальном времени с помощью командной строки, mvn help:evaluateнаходясь в том же каталоге, что и POM.


Кажется, некоторые взяты из XML-дерева, а некоторые из "просто обычных свойств" FWIW ...
rogerdpack

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

(Чтобы ссылаться на каталог (ы) ресурсов, см. Этот вопрос о переполнении стека )


<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 и получил еще несколько актуальных ответов.

Я бы сказал, что лучший (и самый авторитетный) ответ, содержащийся в моей ссылке выше, - это ответ Эрве БУТЭМИ:

вот основная ссылка: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

он не объясняет все, что можно найти в POM или в настройках, поскольку доступно так много информации, но он указывает на дескрипторы POM и настроек и объясняет все, что не является POM или настройками


3
Сам вопрос требует ссылки, поэтому я думаю, что ваше беспокойство неуместно. В этом вопросе задается не «Как мне сделать X», а «Где я могу найти X».
Стив Коэн

2
упс, вы правы - это вопрос, который не укладывается в этот сайт :-) Спасибо за
предупреждение

1
И тем не менее, этот вопрос возникает снова и снова, что было легко признано во многих ответах, полученных мной в списке рассылки. Дело в том, что Maven не документирует эту область хорошо или достаточно кратко. На их веб-сайте должна быть страница с такой информацией, а ее нет. Даже из этих ссылок не сразу ясно, что любой элемент ссылки POM или других упомянутых мест может быть преобразован в выражение $ {dotted.notation} и использован в файле POM. Таким образом, этот вопрос служит полезной цели, и его необходимо будет обновить, если он снова будет перемещен.
Стив Коэн,

1
запрос внешних ресурсов выходит за рамки этого сайта, если бы все играли по правилам, не было бы никаких X вопросов ;-)
kleopatra

3
Иногда я не понимаю правил. Это совершенно правильный вопрос, и люди были более чем готовы ответить на него в прошлом. Будучи такими приверженцами таких правил, Stack Overflow отрезает ему нос назло своему лицу.
Стив Коэн

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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.