小编典典

使用 Maven 复制文件的最佳实践

all

我有配置文件和各种文档,我想使用 Maven2 从开发环境复制到 dev-server 目录。奇怪的是,Maven 似乎不擅长这项任务。

一些选项:

  • 在 Maven 中简单使用 复制任务
<copy file="src/main/resources/config.properties"

tofile=”${project.server.config}/config.properties”/>

  • 使用 Ant 插件从 Ant 执行 复制

    • 构造一个 zip 类型的工件,以及通常是 jar 类型的 POM 的“主要”工件,然后将该工件从存储库 解压缩 到目标目录中。

    • maven-resources 插件,如下所述。

    • Maven Assembly 插件——但这似乎需要大量手动定义,当我想简单而“传统地”做事时。

    • 这个页面甚至展示了如何构建一个插件来进行复制!

    • maven-upload 插件,如下所述。

    • maven-dependency-plugincopy ,如下所述。

所有这些似乎都是不必要的临时性:Maven 应该擅长于完成这些标准任务而无需大惊小怪。

有什么建议吗?


阅读 70

收藏
2022-06-27

共1个答案

小编典典

不要回避 Antrun 插件。只是因为有些人倾向于认为 Ant 和 Maven
是对立的,但事实并非如此。如果您需要执行一些不可避免的一次性定制,请使用复制任务:

<project>
  [...]
  <build>
    <plugins>
      [...]
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>deploy</phase>
            <configuration>
              <target>

                <!--
                  Place any Ant task here. You can add anything
                  you can add between <target> and </target> in a
                  build.xml.
                -->

              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

在回答这个问题时,我专注于你所问的细节。如何复制文件?这个问题和变量名让我想到了一个更大的问题,比如:“有没有更好的方法来处理服务器配置?” 使用
Maven 作为构建系统来生成可部署的工件,然后在单独的模块中或完全在其他地方执行这些自定义。如果您共享更多的构建环境,可能会有更好的方法 -
有插件来配置许多服务器。你能附加一个在服务器根目录中解压的程序集吗?你用的是什么服务器?

同样,我确信有更好的方法。

2022-06-27