【问题标题】:Maven Mojo: escape characters in default-value of propertiesMaven Mojo:属性默认值中的转义字符
【发布时间】:2012-05-14 17:12:27
【问题描述】:

Mojo 属性的默认值以:

开头
${user.home}

我会将值写入属性文件,然后应该在运行时而不是在构建时替换它。

我试过了:

default-value="${user.home}/..."
default-value="\${user.home}/..."
default-value="\\${user.home}/..."

但它总是被运行构建的用户的 user.home 替换。

有没有办法避免更换?

编辑:

有问题的代码在自定义 Maven Mojo 中:

public class MyCustomMojo extends AbstractMojo {

    ...

    /**
     * @parameter expression="${some-expression}" default-value="\\${user.home}/some-path"
     * @required
     */
    private String userdir;

    ...

    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {

        ...

        Properties configProperties = new Properties();
        configProperties.setProperty(Main.USER_DIR_PROPERTY, userdir);
        Path propertiesFilePath = confPath.resolve(propertiesFileName);
        try (BufferedOutputStream bos = new BufferedOutputStream(Files.newOutputStream(propertiesFilePath))) {
            properties.store(bos, "");
        }

        ...

    }
}

【问题讨论】:

    标签: maven maven-plugin


    【解决方案1】:

    在你清楚地谈论创建插件之后......重点来了,default-value 旨在在 mojo 的构建执行期间被替换。我不确定你想达到什么目标,但我认为你在表达上误会了它。此外,默认值的想法是它将被替换,包括。系统属性。或许您可以提供补充信息以了解您想要达到的目标。

    【讨论】:

    • 我不明白。默认值是 Mojo 的 Javadoc 的一部分。 (Mojos 使用基于 Javadoc 的注释。)我想稍后将其写入到属性文件,但在我编写之前它已被替换。
    • 你能把pom和你到底叫什么以及上面的文件在哪里吗?
    • 默认值是自定义 Maven Mojo 插件的一部分。请参阅我更新的问题。
    • 为什么要通过 user.home 在当前模块之外定义一些东西?
    • 自定义 Mojo 创建一个属性文件。 userdir 将是我正在写入该文件的属性之一的值。它是运行时存储应用程序数据的地方。 userdir 的默认值应以 ${user.home} 开头,例如${user.home}/.myProduct/version
    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2018-12-13
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多