W Maven, do czego to się project.build.directoryodnosi? Jestem trochę zdezorientowany, czy odwołuje się do katalogu kodu źródłowego lub katalogu docelowego w projekcie Maven?
W Maven, do czego to się project.build.directoryodnosi? Jestem trochę zdezorientowany, czy odwołuje się do katalogu kodu źródłowego lub katalogu docelowego w projekcie Maven?
Odpowiedzi:
Możesz znaleźć te właściwości maven w super pom.
Słoik znajdziesz tutaj:
${M2_HOME}/lib/maven-model-builder-3.0.3.jar
Otwórz słoik za pomocą 7-zip lub innego archiwizera (lub użyj narzędzia jar).
Nawigować do
org/apache/maven/model
Tam znajdziesz pom-4.0.0.xml.
Zawiera wszystkie te „skróty”:
<project>
...
<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>
Po pewnym lobbowaniu dodaję link dopom-4.0.0.xml . Pozwala to zobaczyć właściwości bez otwierania lokalnego pliku jar.
project.build.directoryna przykład domyślnej wartości . To właśnie chciałem pokazać.
Wskazuje na katalog wyjściowy najwyższego poziomu (którym jest domyślnie target):
EDYCJA: Jak już wspomniano, Codehaus obecnie niestety nie istnieje. Szczegółowe informacje na temat tych nieruchomości od Sonatype można znaleźć tutaj:
Jeśli kiedykolwiek próbujesz odwoływać się do katalogów wyjściowych w Maven, nigdy nie powinieneś używać wartości literałów, takich jak target / classes . Zamiast tego do odwoływania się do tych katalogów należy używać odwołań do właściwości.
project.build.sourceDirectory project.build.scriptSourceDirectory project.build.testSourceDirectory project.build.outputDirectory project.build.testOutputDirectory project.build.directory
sourceDirectory,scriptSourceDirectoryOraztestSourceDirectoryzapewnienie dostępu do katalogów źródłowych projektu.outputDirectoryitestOutputDirectoryzapewnij dostęp do katalogów, w których Maven umieści kod bajtowy lub inne dane wyjściowe kompilacji.directoryodnosi się do katalogu, który zawiera wszystkie te katalogi wyjściowe.
project.base.dirwskazuje na katalog główny projektu, w którym znajduje się pom.xml. Dlatego po tym, project.build.directoryMaven definiuje ${project.basedir}/target. Dzięki chłopaki, nie wiedziałem tego.
${project.build.sourceDirectory}wskazuje project-A/src/main/java, ${project.build.scriptSourceDirectory}wskazuje project-A/src/main/scripts, ${project.build.testSourceDirectory}wskazuje project-A/src/test/java, ${project.build.directory}wskazuje project-A/target, ${project.build.directory}wskazuje project-A/target/classes, ${project.build.testOutputDirectory}wskazuje project-A/target/test-classes.
Możesz znaleźć najbardziej aktualną odpowiedź na wartość w swoim projekcie, po prostu wykonaj
mvn3 help:effective-pom
polecenie i znajdź wartość <build> ... <directory>tagu w wyniku, czyli w efektywnym-pom. Pokaże wartość Super POM, chyba że nadpisałeś.