【问题标题】:How can I backup file using pom.xml?如何使用 pom.xml 备份文件?
【发布时间】:2011-06-08 02:44:41
【问题描述】:

我在这里有三个问题。一、maven的pom.xml和其他xml文件有区别吗?

其次,如果我想通过脚本重命名与 pom.xml 相同目录下的文件,可以在 pom.xml 中进行吗?如果可以,那我该怎么做呢?

最后,如何在 pom.xml 中获取当前时间?

事实上,我想要实现的是,我想通过在我 mvn 打包它之前附加时间戳来备份当前的包(.war)。我希望整个过程由 pom.xml 自动化,而不是手动处理它。

你好,

我找到了一种获取时间戳的方法,它会起作用吗?

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactID>buildnumber-maven-plugin</artifactId>
  <execution>
  <phrase>package</phrase>
  <configuration>
    <format>{0, date, yyyy-MM-dd HH:mm:ss}</format>
    <items>timestamp</items>  
  </configuration>
  <execution>
</plugin>

它会起作用吗?如果可行,我如何获得时间戳变量? $items 还是 $timestamp?

谢谢

【问题讨论】:

    标签: xml maven tags


    【解决方案1】:
    1. Maven pom.xml 只是另一个 XML 文件,与其他文件没有区别。它遵循相同的 XML 标准。

    现在对于问题 2 和 3,首先,当您运行 mvn clean 时,它将清除所有文件,包括目标文件夹中的 war

    你可以运行ANT任务来重命名和备份当前的war,但是在clean之前不能执行。 我建议您采用以下方法:

    • 运行 maven-antrun-plugin 作为 package 目标的一部分。
    • ANT目标中,重命名并备份当前打包的war。

    或者
    我的建议是:在WAR pom.xml 中,使用当前时间戳和所需版本指定&lt;version&gt; 元素。这样,每个战争都会被复制到 maven 本地存储库中的不同目录中。

    PS:据我所知,您无法在 Maven 中生成时间戳。通过一些外部变量传递它

    【讨论】:

    • 嗨,朋友,运行 maven-antrun-plugin 看起来不错。但我只能 一些文件,我没有重命名的标签。你能给我一个例子来说明它的用法吗?提前致谢!
    • 请注意,我找到了一种通过插件查找时间戳的方法。如何将它嵌入到要备份的文件的名称中。
    • 是的,你只能复制打包后的神器(WAR)。不需要移动它。 &lt;copy file="[current_location]\MyWar.war" tofile="[new_location]\MyWar_${timestamp}.war" /&gt;
    • 看起来不错!一切正常,除了我发现的方法不起作用。它只是给我 xxx_${timestamp} 而不是那里的实时时间。嗯...代码有什么问题?
    • 您如何称呼您的 POM?您可以在那里传递时间戳变量本身...mvn clean install -Dtimestamp="08/05/2011 03:03:00"
    【解决方案2】:

    也许您应该为您的问题设置上下文以获得更好的答案。不管怎样,就这样吧。

    • pom.xml 是一个 xml 文件,有自己的schema。因此它不同于其他 xml 文件。

    • 有几种方法可以使用 maven 重命名文件。 This SO discussion 提供选项。其中之一如下:

    基本上,您将拥有一个与this example(外部build.xml)中的条目类似的pom。您的 ant build.xml 将包含与此类似的条目:

    <?xml version="1.0"?>
    <project name="dummy">
        ...
        <target name="rename">
            <move file="file.orig" tofile="file.moved"/>
        </target>
        ...
    </project>
    
    • 您可以使用一个特殊的 maven 变量作为时间戳,如文档 here 所述。使用方法参考这个SO discussion

      maven.build.timestamp 表示构建开始的时间戳。从 Maven 2.1.0-M1 开始

    【讨论】:

    • 非常感谢!你的解释很详细,很有帮助。如果您能给我一个代码示例,向我展示如何重命名文件,那将是一个很大的帮助,因为您刚刚提供的链接对我来说太难理解了。谢谢,
    猜你喜欢
    • 2014-10-08
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多