【问题标题】:Run specific standalone ant target from Maven从 Maven 运行特定的独立 ant 目标
【发布时间】:2014-11-05 16:43:36
【问题描述】:

我在我的 POM 中定义了以下插件,试图在我们的测试或生产 tomcat 服务器上部署 maven 生成的 .war 文件:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.7</version>
  <configuration>
    <target name="test-deploy">
      <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
        <deploy 
          path="/${project.name}" 
          url="http://test-server:8080/manager/text" 
          username="user" 
          password="pass"
          war="file:${project.build.directory}/${project.build.finalName}.${project.packaging}" 
          update="true"/>
    </target>
    <target name="prod-deploy">
      <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
        <deploy 
          path="/${project.name}" 
          url="http://prod-server:8080/manager/text" 
          username="user" 
          password="pass"
          war="file:${project.build.directory}/${project.build.finalName}.${project.packaging}" 
          update="true"/>
    </target>
  </configuration>
  <dependencies>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>tomcat-catalina-ant</artifactId>
      <version>8.0.14</version>
    </dependency>
  </dependencies>
</plugin>

从阅读Maven AntRun Plugin usage 看来,我应该能够添加目标名称(正如我所做的那样),但我不确定如何调用特定目标。 web-deploy 目标是唯一运行的目标,即使我尝试仅调用 test-deploy 目标:

mvn antrun:run -Dtarget=test-deploy

如何指定要运行的 ant 目标?

【问题讨论】:

    标签: java maven maven-antrun-plugin


    【解决方案1】:

    AFAIK,这是不可能的。

    我建议使用maven profiles 来拆分 maven 任务并使用 maven 根据条件或命令行参数触发配置文件的能力调用它们。
    这意味着每个配置文件都将声明自己的 ma​​ven-antrun-plugin,但您可以灵活地单独调用它们。

    我希望这会有所帮助。

    【讨论】:

    • 有道理,感谢您的回答。我会按照您的建议进行操作,并希望提供有效的解决方案。
    【解决方案2】:

    根据 Eldad AK 的回答,这是一个简单的工作解决方案,使用 maven 配置文件来自定义该配置文件的 ant 目标运行:

            ...
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-antrun-plugin</artifactId>
              <version>1.7</version>
              <configuration>
                <target>
                  <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
                    <echo message="Deploying to ${tomcat.deploy.url}"/>
                    <deploy 
                      path="/${project.name}" 
                      url="${tomcat.deploy.url}" 
                      username="${tomcat.deploy.username}" 
                      password="${tomcat.deploy.password}"
                      war="file:${project.build.directory}/${project.build.finalName}.${project.packaging}" 
                      update="true"/>
                </target>
              </configuration>
              <dependencies>
                <dependency>
                  <groupId>org.apache.tomcat</groupId>
                  <artifactId>tomcat-catalina-ant</artifactId>
                  <version>8.0.14</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </build>
    
        <profiles>
          <profile>
            <id>test</id>
            <properties>
              <tomcat.deploy.url>http://test-server:8080/manager/text</tomcat.deploy.url>
              <tomcat.deploy.username>user</tomcat.deploy.username>
              <tomcat.deploy.password>pass</tomcat.deploy.password>
            </properties>
          </profile>
          <profile>
            <id>prod</id>
            <properties>
              <tomcat.deploy.url>http://prod-server:8080/manager/text</tomcat.deploy.url>
              <tomcat.deploy.username>user</tomcat.deploy.username>
              <tomcat.deploy.password>pass</tomcat.deploy.password>
            </properties>
          </profile>
        </profiles>
    

    要部署到测试或生产,只需选择适当的配置文件:

    > mvn -Pprod antrun:run
    
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building ExampleApplication 1.0
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] --- maven-antrun-plugin:1.7:run (default-cli) @ ExampleApplication ---
    [INFO] Executing tasks
    
    main:
         [echo] Deploying to http://prod-server:8080/manager/text
       [deploy] OK - Deployed application at context path /ExampleApplication
    [INFO] Executed tasks
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    

    【讨论】:

      猜你喜欢
      • 2012-03-25
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      相关资源
      最近更新 更多