The ${project.basedir}
property in pom.xml
refers to the directory where the current Maven project resides. This directory is the root directory of the project and corresponds to the location of the pom.xml
file. For example, if your pom.xml
is located at /path/to/project/pom.xml
, then ${project.basedir}
will evaluate to /path/to/project
[1][4][6].
This property is used extensively in Maven to define various directories such as the source directory (${project.basedir}/src/main/java
), the test source directory (${project.basedir}/src/test/java
), the build directory (${project.basedir}/target
), and more[1][5][7].
In some cases, especially when using relative paths, ${project.basedir}
can be interpreted incorrectly as a fake absolute path, which can lead to errors. For example, if the path is Users\aoliu\OneDrive\Projects\cs61b-sp21\lab2setup
, it should be interpreted as C:\Users\aoliu\OneDrive\Projects\cs61b-sp21\lab2setup
in Windows[2].
Key Points:
- Definition:
${project.basedir}
refers to the root directory of the Maven project. - Usage: Used to define various directories within the project.
- Interpretation: Can be interpreted as a relative or absolute path, depending on the context.
Example Configuration:
<build>
<directory>${project.basedir}/target</directory>
<outputDirectory>${project.build.directory}/classes</outputDirectory>
<testOutputDirectory>${project.build.directory}/tests</testOutputDirectory>
<sourceDirectory>${project.basedir}/src</sourceDirectory>
</build>
This configuration sets the build directory to ${project.basedir}/target
, the output directory to ${project.build.directory}/classes
, and the source directory to ${project.basedir}/src
[5].
Citations:
[1] Meaning of ${project.basedir} in pom.xml – java – Stack Overflow https://stackoverflow.com/questions/35985090/meaning-of-project-basedir-in-pom-xml
[2] ${project.basedir} in pom.xml interpreted wrongly to a … – GitHub https://github.com/redhat-developer/vscode-java/issues/2298
[3] ${project.basedir} is yielding errors in pom.xml : IDEA-229736 – YouTrack https://youtrack.jetbrains.com/issue/IDEA-229736/project.basedir-is-yielding-errors-in-pom.xml
[4] Introduction to the POM – Apache Maven https://maven.apache.org/guides/introduction/introduction-to-the-pom.html
[5] Manage Directories – Apache Maven Tutorial – Codetab https://www.codetab.org/tutorial/apache-maven/plugins/manage-maven-directories/
[6] Maven Properties Guide – Confluence Mobile – Apache Software Foundation https://cwiki.apache.org/confluence/display/MAVEN/Maven%2BProperties%2BGuide
[7] Maven Getting Started Guide https://maven.apache.org/guides/getting-started/
[8] Maven predefined properties – My linux world https://blog.rabahi.net/?page_id=1391
[9] Maven ${project.parent.basedir} : IDEA-106594 – YouTrack https://youtrack.jetbrains.com/issue/IDEA-106594/Maven-project.parent.basedir
[10] Maven Model Builder – Introduction https://maven.apache.org/ref/3.2.2/maven-model-builder/
[11] List of predefined Maven properties – GitHub https://github.com/cko/predefined_maven_properties/blob/master/README.md
[12] Incorrect $basedir calculation between Windows & Linux #150 https://github.com/mojohaus/jaxb2-maven-plugin/issues/150