有没有人知道在构建运行后配置maven目标以部署到tomcat服务器的方法?我知道这可以使用maven-tomcat-plugin但看起来好像只适用于Maven 2而我使用的是Maven 1.1
我目前正在尝试设置Hudson,所以这将是我的持续整合阶段的一部分,我希望这样做会这样:
非常感谢任何帮助。
感谢。
答案 0 :(得分:0)
老实说,我会重构您的项目以使用Maven 2,有几个指南可以帮助缓解迁移的痛苦(谷歌maven 2 migration),甚至还有maven-one-plugin转换您的project.xml或为Maven 2打包你的Maven 1插件。
如果你不能这样做,你可以使用Maven 1 ant plugin在打包后将war复制到tomcat的webapps目录。 Tomcat将检测到新的战争并应该进行热部署。
答案 1 :(得分: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
(我知道,对于MS脚本来说是-1)
关键是你通常想要清理工作目录和webapps目录,而Maven 1 ant插件不会这样做(据我所知,如果,并从提供的链接中读取)。 Tomcat“应该”在爆炸war文件时重新创建这些目录中的类文件,但是任何使用过该文件的人都知道:情况并非总是如此。
因此,如果插件没有清理这些目录,就我而言,它是无用的。给自己写一个像提供的那样便宜的小脚本。这需要2分钟。
答案 2 :(得分: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之前,还要确保指定构建WAR的先决条件。希望这有助于某人!
答案 3 :(得分: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>