【问题标题】:Where is the list of predefined Maven properties预定义的 Maven 属性列表在哪里
【发布时间】:2011-05-23 12:19:24
【问题描述】:

我知道有一个所有预定义 Maven 属性的列表(你知道像 project.build.sourceEncodingproject.build.sourceDirectory)。我曾经看过清单,但我再也找不到了。

【问题讨论】:

    标签: maven


    【解决方案1】:

    【讨论】:

    • 通常,当您在 Intellij IDEA 中编辑 pom.xml 时,它会通过为任何看起来像 Maven 属性的东西(例如 ${...})提供选项来提供很大帮助
    • mvn help:effective-pom 是发现可用属性的绝佳工具。 maven.apache.org/plugins/maven-help-plugin/…
    • 也可以在 Maven wiki 中查看此页面:cwiki.apache.org/confluence/display/MAVEN/…
    • 不包括像[WARNING] The expression ${artifactId} is deprecated. Please use ${project.artifactId} instead. 这样的“一切”,但包括大多数;)
    • project.build.sourceDirectory 在哪里?
    【解决方案2】:

    【讨论】:

      【解决方案3】:

      查看“有效的 POM”可能也会有所帮助。例如,如果您想知道${project.build.sourceDirectory} 的路径是什么

      您会在有效的 POM 中找到相关的 XML,例如: <project> <build> <sourceDirectory>/my/path</sourceDirectory>

      也很有帮助 - 您可以在与 POM 相同的目录中通过命令行执行 mvn help:evaluate 对属性进行实时评估。

      【讨论】:

      • 似乎有些来自 XML 树,有些来自“只是普通属性”FWIW...
      【解决方案4】:

      我认为最好的查看位置是Super POM

      例如,在撰写本文时,链接参考显示了第 32 - 48 行之间的一些属性。

      对此的解释是遵循XPath 作为. 分隔属性。

      所以,例如:

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

      还有:

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

      将它们组合起来,我们发现:

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

      (要引用资源目录,请参阅this stackoverflow question


      <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>
      

      【讨论】:

        【解决方案5】:

        我厌倦了看到这个页面现在已经过时引用了已失效的 Codehaus 页面,所以我在 Maven Users mailing list 上提问并得到了一些最新的答案。

        我想说,我上面的链接中包含的最好(也是最权威)的答案是 Hervé BOUTEMY 提供的答案:

        这里是核心参考: http://maven.apache.org/ref/3-LATEST/maven-model-builder/

        它没有解释可以在 POM 或设置中找到的所有内容, 因为有很多可用的信息,但它指向 POM 和 设置描述符并解释所有不是 POM 或 设置

        【讨论】:

        • 这个问题要求提供链接,所以我认为您的关注是错误的。这个问题不是问“我如何做 X”,而是“我在哪里可以找到 X”。
        • 哎呀,你是对的 - 这个问题不适合这个网站 :-) 感谢您的提醒 - 投票结束
        • 然而,这是一个一再出现的问题,正如我在邮件列表中收到的许多答案中所承认的那样。关键是 Maven 没有很好或足够简洁地记录这个领域。他们的网站上应该有一个页面突出显示此类信息,但没有。即使从这些链接中也不能立即清楚地看出,POM 引用或提到的其他地方的任何元素都可以转换为 ${dotted.notation} 表达式并在 POM 文件中使用。因此,这个问题很有用,如果再次移动,则需要更新。
        • 寻求外部资源不在本站范围内,如果所有人都遵守规则,就不会有任何X在哪里问题;-)
        • 我有时不懂规则。这是一个完全有效的问题,过去人们非常愿意回答它。通过对这些规则如此坚持,Stack Overflow 砍掉了它的鼻子来对抗它的脸。
        【解决方案6】:

        此链接显示如何列出所有活动属性: http://skillshared.blogspot.co.uk/2012/11/how-to-list-down-all-maven-available.html

        总而言之,将以下插件定义添加到您的 POM,然后运行 ​​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>
        

        【讨论】:

          猜你喜欢
          • 2022-09-27
          • 1970-01-01
          • 1970-01-01
          • 2012-03-07
          • 2015-10-29
          • 1970-01-01
          • 2013-09-21
          相关资源
          最近更新 更多