maven属性$ {project.artifact.selectedVersion.majorVersion}

Dav*_*lla 4 java maven

我在许多pom.xml文件中看到了这个属性的使用:$ {project.artifact.selectedVersion.majorVersion}

例如:

<project>
  <modelVersion>4.0.0</modelVersion>

  <groupId>my_group</groupId>
  <artifactId>my_artifact</artifactId>
  <packaging>pom</packaging>
  <version>1.2.3-SNAPSHOT</version>

  <properties>
     <ver>${project.artifact.selectedVersion.majorVersion}</ver>
...
Run Code Online (Sandbox Code Playgroud)

此属性不在标准maven中:http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide

那么,这个变量定义在哪里?

我看到它有build-helper-maven-plugin插件:http://mojo.codehaus.org/build-helper-maven-plugin/parse-version-mojo.html

它可以将变量解析为majorVersionminorVersion,但是默认值defaultPrefixparsedVersion.{majorVersion, minorVersion},而不是project.artifact.selectedVersion.{majorVersion, minorVersion}......(并且defaultPrefix我没有在那些正在查看的pom.xml文件中定义)

那么,变量${project.artifact.selectedVersion.majorVersion}定义在哪里?

Sea*_*oyd 5

做事情通常是从开始MavenProjectJavaDoc中,并通过点击属性路径.

MavenProject- > .getArtifact()- > Artifact- > .getSelectedVersion()- > ArtifactVersion- >.getMajorVersion()

对于pom.xml中的每个XML元素,都有相应的JavaBean属性MavenProject,而句点分隔属性属性的路径.