1

我有一个 POM 文件,它当前正在将编译的 EAR 文件复制到 linux 目录。

我的意思是为我的 Windows 开发人员做同样的事情,而不需要他们手动调整输出目录。因此,maven 资源插件应该由操作系统确定路径(Linux 的 /projects/shared_ears 和 Windows 的 D:\projects_bin\shared_ears)。可以用 maven-resources-plugin 完成吗?说,不使用 maven ant run 插件?

在仅适用于 linux OS 的现有复制命令下方。

感谢任何聪明的想法。

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <id>copy-resources</id>
            <phase>install</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>/projects/shared_ears</outputDirectory>
                <resources>
                    <resource>
                        <directory>${project.build.directory}</directory>
                        <includes>
                            <include>project-${project.version}.ear</include>
                        </includes>
                    </resource>
                </resources>
                <overwrite>true</overwrite>
            </configuration>
        </execution>

    </executions>
</plugin>
4

1 回答 1

1

最简单的方法是使用Maven 配置文件

激活配置文件的一种方法是使用 os(操作系统)。您必须定义一个属性。假设<ear.directory>/projects/shared_ears</ear.directory>并在您的插件配置中使用此属性:

        <configuration>
            <outputDirectory>${ear.directory}</outputDirectory>
            <resources>
                <resource>
                    <directory>${project.build.directory}</directory>
                    <includes>
                        <include>project-${project.version}.ear</include>
                    </includes>
                </resource>
            </resources>
            <overwrite>true</overwrite>
        </configuration>

现在,您可以在 2 个不同的配置文件中指定此属性,并根据当前操作系统激活一个配置文件或另一个。这是如何做到的:

<profiles>
  <profile>
    <id>WinProfile</id>
    <activation>
      <os>
        <family>windows</family>
      </os>
    </activation>
    <properties>
      <ear.directory>D:\projects_bin\shared_ears</ear.directory>
    </properties>
    ...
  </profile>
  <profile>
    <id>UnixProfile</id>
    <activation>
      <os>
        <family>unix</family>
      </os>
    </activation>
    <properties>
      <ear.directory>/projects/shared_ears</ear.directory>
    </properties>
    ...
  </profile>
</profiles>

有关配置文件和操作系统检测的附加信息here

于 2013-04-02T07:44:35.493 回答