【问题标题】:Maven Wagon plugin: Can wagon:upload upload to multiple locations?Maven Wagon 插件:可以 wagon:upload 上传到多个位置吗?
【发布时间】:2011-05-20 15:28:14
【问题描述】:

我正在研究 Maven Wagon Plugin 以尝试将一些工件上传到远程 UNC 服务器共享 (\\servername\share\directory\to\put\to),并且我已将其配置为在 POM 中像这样工作:

<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-file</artifactId>
      <version>1.0-beta-7</version>
    </extension>
  </extensions>
<plugins>
  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <executions>
      <execution>
        <id>upload-jar-to-folder</id>
        <phase>deploy</phase>
        <goals>
          <goal>upload</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <fromDir>${project.build.directory}</fromDir>
      <includes>*</includes>
      <url>file://localhost///${servername}/${sharename}</url>
      <toDir>directory/to/put/artifact</toDir>
    </configuration>
  </plugin>
  ...
</build>

当我传入 -Dservername=x -Dsharename=y 时,对于一台服务器效果很好,但是我如何扩展它以便我可以为 QA 或 Prod 运行部署有多个服务器要部署到?

我已经考虑(并编写)了一个脚本来多次运行mvn wagon:upload -Penvironment#——每个服务器一次——但这对我来说似乎有缺陷。如果我要编写一个脚本来处理这个过程,我也可以编写整个部署的脚本。然而,这剥夺了 Wagon(和 Maven)的用处......

有没有办法为一个目标运行多个&lt;executions&gt;?例如,当我只运行mvn deploy -Pqa 时,运行多个配置文件配置了wagon:upload 任务?

【问题讨论】:

  • 不是单独上传,你的服务器不能共享一个网络驱动器吗?他们可能应该在同一个网络中并且可以互相看到。只是一个建议。
  • 我不确定这是否可行。我部署到的文件夹是 Weblogic 安装的“自动部署”文件夹,该文件夹特定于每个实例。我不反对这样做,但我不知道我以前是否看过它并且不知道该怎么做。

标签: maven wagon maven-wagon-plugin


【解决方案1】:

如果您想使用多个配置文件,您可以使用:mvn deploy -Denv=qa 并在此属性上触发一些配置文件,并在配置文件中为您的服务器定义配置。对于这种配置文件激活看看

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

然后搜索

-Denvironment=测试

这是一个示例 POM,它在一个构建中执行两次 maven-antrun-plugin:

 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.stackoverflow</groupId>
  <artifactId>q5328617</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <profiles>
    <profile>
        <activation>
            <property>
                <name>env</name>
                <value>qa</value>
            </property>
        </activation>
        <id>qa1</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                      <execution>
                        <id>qa1</id>
                        <phase>test</phase>
                        <configuration>
                            <tasks>
                                <echo level="info">Executing qa1</echo>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                      </execution>
                    </executions>
                    <dependencies>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <activation>
            <property>
                <name>env</name>
                <value>qa</value>
            </property>
        </activation>
        <id>qa2</id>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <executions>
                      <execution>
                        <id>qa2</id>
                        <phase>test</phase>
                        <configuration>
                            <tasks>
                                <echo level="info">Executing qa2</echo>
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                      </execution>
                    </executions>
                    <dependencies>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
    </profile>
  </profiles>
</project>

【讨论】:

  • 配置文件激活是否允许多次执行同一个插件?在上面,部署到一台服务器和另一台服务器之间的唯一变化是 url。我想一口气运行上述插件的 2、3 或更多次执行,以将其安装在所有服务器上。
  • 是的(刚刚尝试过;-)!我编辑了答案并添加了一个示例。
  • 太棒了!我现在将在我的项目中尝试一下。这有点冗长,但至少是可能的。
猜你喜欢
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
相关资源
最近更新 更多