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

我目前正在尝试设置 Hudson,因此这将是我持续集成阶段的一部分,我希望该阶段能够像这样运行:

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

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

谢谢。

有帮助吗?

解决方案 3

我已经找到了最好的方法来做到这一点 - 实际上编写一个专家目标来转移战争非常容易。目标可以写成如下:

<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 之前指定构建 WAR 的先决条件。希望这对某人有帮助!

其他提示

老实说,我会重构你的项目以使用 Maven 2,有几个指南可以帮助减轻迁移痛苦(谷歌 Maven 2 迁移),甚至还有 Maven 单一插件 转换您的project.xml或将您的Maven 1插件打包为Maven 2。

如果你不能这样做,你可以使用 Maven 1 蚂蚁插件 打包后将war复制到tomcat的webapps目录下。Tomcat 将检测到新的战争并应对其进行热部署。

我必须承认,我对 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 分钟。

可以为maven-war-plugin配置webapp目录来部署爆炸战争。不需要什么特别的,只需运行 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>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top