Де перелік заздалегідь визначених властивостей 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 (наприклад ${...})
Kedar Mhaswade

mvn help: ефективні помпонні підставки як чудовий інструмент для виявлення наявних властивостей. maven.apache.org/plugins/maven-help-plugin/…
Пітер Кан

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

(Для посилання на каталоги ресурсів див. Це питання про 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 і отримав ще кілька актуальних відповідей.

Я б сказав, що найкраща (і найавторитетніша) відповідь, що міститься в моєму посиланні вище, - це відповідь, зроблена Герве БОТЕМІ:

ось основна посилання: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

він не пояснює все, що можна знайти в POM або в налаштуваннях, оскільки є так багато інформації, але вона вказує на POM та дескриптори налаштувань і пояснює все, що не є POM або налаштуваннями


3
Саме запитання вимагає посилання, тому я вважаю, що ваше занепокоєння не вдається. Це запитання не задає питання "Як зробити X", а "Де можна знайти X".
Стів Коен

2
ой, ви праві - це питання не вписується на цей сайт :-) Дякую за голову вгору - проголосували за закриття
kleopatra

1
І все-таки, це питання виникає знову і знову, як це було легко визнано в багатьох відповідях, отриманих моїм листом розсилки. Справа в тому, що Мейвен не документує цю область добре або стисло. На їхньому веб-сайті має бути помітна сторінка для такої інформації, а її немає. Навіть із цих посилань не відразу зрозуміло, що будь-який елемент посилання 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.