【问题标题】:Referencing resources directory from project object model variables从项目对象模型变量中引用资源目录
【发布时间】:2012-02-09 18:26:46
【问题描述】:

如果我可以使用${project.build.sourceDirectory} 引用源目录,我应该使用什么来引用“资源”目录?

查看超级 pom,${project.build.resources.resource.directory} 似乎可以工作,但它没有。 . .

【问题讨论】:

    标签: maven


    【解决方案1】:

    来自here

    directory:该元素的值定义了可以找到资源的位置。 构建的默认目录是${basedir}/src/main/resources

    编辑:为清楚起见

    【讨论】:

    • 感谢您的帮助,但这不是我要问的。我了解如何将资源提取到构建中,以及如何配置它们。我需要知道如何通过 ${xxx} 符号公开的 pom 属性来引用这个位置。
    • 你在我的评论中滚动了吗?这个 ${xxx} 表达式引用了资源文件夹:${basedir}/src/main/resources
    • 在 Windows 上,上述建议会导致文件分隔符的奇怪混合。
    • The book 说:“如果你曾经试图在 Maven 中引用输出目录,你不应该使用像 target/classes 这样的文字值。”可能是@MarkMcLaren 提到的原因。
    • 应该使用 ${project.basedir} 是惯用的。
    【解决方案2】:
    ${project.build.resources[0].directory}
    

    maven reference @ Sonatype, chapter 'resource filtering' 表示可以访问来自 maven 内部“Model.class”的任何内容。引用:

    "有关 Maven 模型对象上可用属性的完整列表,请在此处查看 maven-model 项目的 JavaDoc http://maven.apache.org/ref/3.0.4/maven-model/apidocs/index.html。加载此 JavaDoc 后,请查看 Model 类. 从这个 Model 类 JavaDoc 中,您应该能够导航到您希望引用的 POM 属性。"

    然后,maven help plugin 有一个方便的 help:evaluate 目标,让您可以通过反复试验来发现属性。

    【讨论】:

    • 不确定使用“[0]”是个好主意,如果由于某种原因顺序发生变化,曾经对您有用的方法将不再有效。
    • 这不适用于 antrun 插件和可能的其他插件
    • 这在 maven-assembly-plugin 描述符中的 元素内不起作用。
    • 确认这(仍然)在 maven-assembly-plugin 描述符中不起作用
    • 今天是${project.resources[0].directory}}$,是不是打错字了?
    【解决方案3】:

    扩展@chiebaud的回答,使用maven帮助插件,我认为今天正确的选项是

    ${project.resources[0].directory}
    

    (没有“.build”部分)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-04
      • 1970-01-01
      相关资源
      最近更新 更多