1

有谁知道在运行构建后配置 maven 目标以部署到 tomcat 服务器的方法?我知道使用 maven-tomcat-plugin 可以做到这一点,但它看起来好像只适用于 Maven 2,而我使用的是 Maven 1.1

我目前正在尝试设置 Hudson,所以这将是我持续集成阶段的一部分,我希望它会像这样运行:

  1. 构建所有必要的组件
  2. 构建战争并部署到(本地)服务器
  3. 运行硒测试

对此的任何帮助将不胜感激。

谢谢。

4

4 回答 4

0

老实说,我会重构您的项目以使用 Maven 2,有几个指南可以帮助缓解迁移痛苦(google maven 2 migration),甚至还有maven-one-plugin可以转换您的 project.xml 或打包您的 Maven 1 插件对于 Maven 2。

如果你不能这样做,你可以在打包后使用Maven 1 ant 插件将战争复制到 tomcat 的 webapps 目录。Tomcat 将检测到新的战争并应热部署它。

于 2009-09-22T12:58:32.120 回答
0

我不得不承认,我对 maven 插件了解不多,但是我在一个简单的脚本中完成所有工作,该脚本也清理了工作目录(不知道 maven 插件是否清理了工作目录)。

CALL mvn clean install
CALL rm C:\apps\tomcat\webapps\Foo.war 
CALL rm -rdf C:\apps\tomcat\webapps\foo
CALL rm -rdf C:\apps\tomcat\work\Catalina
CALL copy C:\webapps\workspace\Foo\target\Foo.war C:\apps\tomcat\webapps\Foo.war /y

(我知道,-1 用于 MS 脚本)

关键是您通常要清理工作目录和 webapps 目录,而 Maven 1 ant 插件不这样做(据我所知,并从提供的链接中阅读)。Tomcat “应该”在分解 war 文件时在这些目录中重新创建类文件,但任何使用它足够长的人都知道:情况并非总是如此。

因此,如果插件不清理这些目录,就我而言,它是无用的。给自己写一个便宜的小脚本,就像提供的那样。需要 2 分钟。

于 2009-09-22T13:08:19.947 回答
0

我已经找到了做到这一点的最佳方法——实际上很容易编写一个 maven 目标来转移战争。目标可以写成如下:

<goal name="deployWar" prereqs="buildWar">

    <echo message="+---------------------------------------------------+" />
    <echo message="installing war file to server" />
    <echo message="+---------------------------------------------------+" />

    <j:set var="deploy.dir" value="${server}/webapps" />

    <copy file="${maven.build.dir}/${pom.artifactId}.war"
        todir="${deploy.dir}" overwrite="true" />
</goal>

服务器变量可以在您的 project.properties 文件中确定。还要确保在尝试部署之前指定构建 WAR 的先决条件。希望这对某人有帮助!

于 2009-09-24T10:57:10.523 回答
0

可以为 maven-war-plugin 配置 webappDirectory 来部署爆炸战争。不需要什么特别的,只需运行 maven install 即可。

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1.1</version>
<configuration>
    <webappDirectory>path/to/server/deploy/dir</webappDirectory>
</configuration>
</plugin>
于 2011-10-06T18:16:43.623 回答