使用maven 1.1将war部署到tomcat服务器

时间:2009-09-22 12:46:57

标签: tomcat6 web-deployment maven-1

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

我目前正在尝试设置Hudson,所以这将是我的持续整合阶段的一部分,我希望这样做会这样:

  1. 构建所有必要的组件
  2. 构建战争并部署到(本地)服务器
  3. 运行selenium测试
  4. 非常感谢任何帮助。

    感谢。

4 个答案:

答案 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>
相关问题