部署到应用程序服务器的正确maven2阶段是什么?

yeg*_*256 6 java maven-2 glassfish glassfish-3

我正在尝试配置,pom.xml以便它自动将EAR存档部署到GlassFish应用程序服务器.我想将此操作附加到正确的maven 执行阶段.但是无法理解哪一个专门用于此操作?部署?安装?请帮忙.这就是我正在做的事情:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
        <execution>
            <phase>deploy</phase>
            <configuration>
                <tasks>
                    <copy file="${project.build.directory}/${project.build.finalName}.ear" 
                        tofile="${glassfish.home}/domains/domain1/autodeploy"/>
                </tasks>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

当我这样做时mvn deploy,maven正试图将我的工件部署到存储库.这不是我要完成的事情.我觉得执行阶段是错误的..

Pas*_*ent 7

当我在做的时候mvn deploy,maven正在尝试将deploy我的工件存储到存储库中.这不是我要完成的事情.我觉得执行阶段是错误的......

在Maven语言中,deploy与部署到应用程序服务器无关,也不是绑定执行此类工作的插件的适当阶段.以下是我们可以阅读的关于构建生命周期简介deploy阶段的内容:

  • deploy - 在集成或发布环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享.

但是,在我与阶段走得更远,我需要一提的是有几个插件,允许与GF相互作用(启动/停止/部署/取消部署/等)可能会做一个更好的比AntRun插件作业(AntRun可能适用于琐碎用例,但是,例如,您可能希望等待部署完成并且应用程序在构建期间处于就绪状态;对于此类用例,您需要更高级的控制).这些候选人是:

使用其中一个确实取决于您的用例.如果您不打算在许多容器上部署,则GlassFish特定插件是最强大的.Cargo的魅力在于它提供了统一的API.但它的配置不太直观,特别是如果你不习惯它.

现在,如果您只是想在开发期间部署应用程序并且不希望构建以任何方式与容器进行交互,那么将任何这些插件绑定到特定阶段并不是那么有用,尽管有些人在部署过程中部署了应用程序.package.

但是,您可能希望在构建过程中对容器运行集成/功能测试.这实际上是一个非常有效且非常常见的用例,实现这一点的相关阶段是:

  • pre-integration-test:执行集成测试之前执行所需的操作.这可能涉及诸如设置所需环境之类的事情.
  • integration-test:如有必要,将包处理并部署到可以运行集成测试的环境中.
  • post-integration-test:执行集成测试后执行所需的操作.这可能包括清理环境.

pre-integration-test阶段通常用于启动容器并在其上部署应用程序.该post-integration-test阶段用于取消部署应用程序并停止容器.

所以我认为部署到服务器可以是一个典型的构建活动,有非常有效的用例,Maven很好地支持这一点.我不是作为构建的一部分部署到我的开发服务器(也不是生产服务器).

也可以看看