Gdzie jest lista predefiniowanych właściwości Maven

125

Wiem, że jest to lista wszystkich predefiniowanych właściwości Mavena (wiesz jak project.build.sourceEncoding, lub project.build.sourceDirectory). Raz widziałem listę, ale po prostu nie mogę jej znaleźć ponownie.

Jaskółka oknówka
źródło

Odpowiedzi:

132

Masz na myśli ten?

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

Przeniosłem też jego zawartość do repozytorium GitHub:

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

free_easy
źródło
1
Zwykle, kiedy edytujesz pom.xml w Intellij IDEA, bardzo pomaga to, zapewniając opcje dla wszystkiego, co wygląda jak właściwość Maven (np. ${...})
Kedar Mhaswade
mvn help: efektywny-pom jest doskonałym narzędziem do odkrywania dostępnych właściwości. maven.apache.org/plugins/maven-help-plugin/…
Peter Kahn
1
Przejrzyj
Guss
Nie zawiera „wszystkiego”, jak [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead.ale obejmuje większość;)
rogerdpack
26

Spojrzenie na „efektywny POM” prawdopodobnie też pomoże. Na przykład, jeśli chcesz wiedzieć, do czego służy ścieżka${project.build.sourceDirectory}

znajdziesz powiązany XML w efektywnym POM, takim jak: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

Pomocne również - możesz dokonać oceny właściwości w czasie rzeczywistym za pomocą wiersza poleceń, mvn help:evaluatebędąc w tym samym katalogu, co POM.

Michael Ford
źródło
Wygląda na to, że niektóre pochodzą z drzewa XML, a niektóre z „zwykłych właściwości” FWIW ...
rogerdpack
11

Myślę, że najlepszym miejscem do obejrzenia jest Super POM .

Na przykład w chwili pisania tego odnośnika odsyłacz zawiera niektóre właściwości między wierszami 32–48.

Interpretacja tego jest następująca po XPath jako .właściwości rozdzielanej.

Na przykład:

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

I:

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

Łącząc je w ten sposób, znajdujemy:

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

(Aby odwołać się do katalogów zasobów, zobacz to pytanie dotyczące 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>
Stewart
źródło
6

Zmęczyło mnie oglądanie tej strony z jej przestarzałymi odniesieniami do nieistniejących już stron Codehaus, więc zapytałem na liście mailingowej użytkowników Mavena i otrzymałem bardziej aktualne odpowiedzi.

Powiedziałbym, że najlepszą (i najbardziej miarodajną) odpowiedzią zawartą w powyższym linku jest ta, której nadesłał Hervé BOUTEMY:

tutaj jest podstawowe odniesienie: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

nie wyjaśnia wszystkiego, co można znaleźć w POM lub ustawieniach, ponieważ jest tyle dostępnych informacji, ale wskazuje na POM i deskryptory ustawień i wyjaśnia wszystko, co nie jest POM lub ustawienia

Steve Cohen
źródło
3
Samo pytanie dotyczy linku, więc myślę, że twoje obawy są nieuzasadnione. To pytanie nie dotyczy „Jak zrobić X”, ale „Gdzie mogę znaleźć X”.
Steve Cohen
2
Ups, masz rację - to pytanie nie pasuje do tej strony :-) Dzięki za
ostrzeżenie
1
A jednak jest to pytanie, które pojawia się raz po raz, jak łatwo przyznałem w wielu odpowiedziach, które otrzymałem na mojej liście mailingowej. Chodzi o to, że Maven nie dokumentuje tego obszaru dobrze ani wystarczająco zwięźle. W ich witrynie internetowej powinna być widoczna strona zawierająca tego rodzaju informacje, a jej nie ma. Nawet z tych linków nie jest od razu jasne, że jakikolwiek element referencji POM lub innych wymienionych miejsc może zostać przekonwertowany na wyrażenie $ {dotted.notation} i użyty w pliku POM. To pytanie służy zatem pożytecznemu celowi i musiałoby zostać zaktualizowane, jeśli zostanie ponownie przeniesione.
Steve Cohen
1
prośba o zewnętrzne zasoby jest poza zasięgiem tej strony, gdyby wszyscy grali według zasad, nie byłoby tam gdzie jest X pytań ;-)
kleopatra
3
Czasami nie rozumiem zasad. To doskonale uzasadnione pytanie i ludzie byli bardziej niż chętni na nie w przeszłości. Będąc takimi zwolennikami takich zasad, Stack Overflow odcina mu nos, na przekór twarzy.
Steve Cohen,
3

Ten link pokazuje, jak wyświetlić listę wszystkich aktywnych usług: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

Podsumowując, dodaj następującą definicję wtyczki do swojego POM, a następnie uruchom 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>
Steve Pitchers
źródło