W Maven, do czego to się project.build.directory
odnosi? 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.directory
odnosi? 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.directory
na 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
,scriptSourceDirectory
OraztestSourceDirectory
zapewnienie dostępu do katalogów źródłowych projektu.outputDirectory
itestOutputDirectory
zapewnij dostęp do katalogów, w których Maven umieści kod bajtowy lub inne dane wyjściowe kompilacji.directory
odnosi się do katalogu, który zawiera wszystkie te katalogi wyjściowe.
project.base.dir
wskazuje na katalog główny projektu, w którym znajduje się pom.xml. Dlatego po tym, project.build.directory
Maven 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ś.