有谁知道在运行构建后配置 maven 目标以部署到 tomcat 服务器的方法?我知道使用 maven-tomcat-plugin 可以做到这一点,但它看起来好像只适用于 Maven 2,而我使用的是 Maven 1.1
我目前正在尝试设置 Hudson,所以这将是我持续集成阶段的一部分,我希望它会像这样运行:
- 构建所有必要的组件
- 构建战争并部署到(本地)服务器
- 运行硒测试
对此的任何帮助将不胜感激。
谢谢。
有谁知道在运行构建后配置 maven 目标以部署到 tomcat 服务器的方法?我知道使用 maven-tomcat-plugin 可以做到这一点,但它看起来好像只适用于 Maven 2,而我使用的是 Maven 1.1
我目前正在尝试设置 Hudson,所以这将是我持续集成阶段的一部分,我希望它会像这样运行:
对此的任何帮助将不胜感激。
谢谢。
老实说,我会重构您的项目以使用 Maven 2,有几个指南可以帮助缓解迁移痛苦(google maven 2 migration),甚至还有maven-one-plugin可以转换您的 project.xml 或打包您的 Maven 1 插件对于 Maven 2。
如果你不能这样做,你可以在打包后使用Maven 1 ant 插件将战争复制到 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 目标来转移战争。目标可以写成如下:
<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 的先决条件。希望这对某人有帮助!
可以为 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>