创建webapp war发布'maven way'

时间:2011-05-17 09:35:36

标签: svn deployment maven release

我的webapp主要包含两个工件:java-server.jar和js-client.war。两者都聚合/重叠并获取目标环境的其他属性文件。最后,我得到了战争文件。

使用tomcat部署一些war文件:通过脚本部署一些,但此时无关紧要。

我的方法有几件我不喜欢的事情:

  • 服务器和客户端随maven-release-plugin一起发布,最终的webapp不是。
  • 只是拥有最终的war文件,我无法确定它是由哪个服务器构建的。
  • 我通常需要同时使用多个客户端/服务器组合:当我使用稳定版本构建测试版服务器时,每晚构建服务器应在最新快照上运行。

如何维护,发布和部署(对maven repo)稳定/ beta网络应用?如何维护特定于目标服务器的配置设置?你如何保留不同的版本?你有很多分支吗?

谢谢,Jan

3 个答案:

答案 0 :(得分:2)

我正在做的是使用Jenkin的额外maven构建步骤来执行

tomcat:deploy
每次构建后

使用正确的maven配置文件,将构建指向我们的dev服务器。然后,当我们想要推送到暂存时,我们使用maven发布插件(再次使用Jenkins)来创建版本号不是快照的版本。假设我们然后将2.0beta3发布到分期。这可以通过以下方式完成:

tomcat:deploy -P staging-deploy

然后,配置文件确保我们使用像这样的pom条目推送到登台服务器而不是dev服务器:

    <profile>
        <id>deploy-staging</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>tomcat-maven-plugin</artifactId>
                    <configuration>
                        <server>tomcat-staging</server>
                        <url>http://tomcat-staging.internal:${tomcat-staging.port}/manager/text</url>
                        <path>${tomcat.path}</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

最后,从舞台到现场,完全是在maven和jenkins之外完成的。我只是不相信maven不打破: - )

答案 1 :(得分:0)

我可以推荐使用像hudson这样的构建服务器。它有maven和rcs支持。 例如,您可以指定要构建的源代码的哪个分支以及要执行的maven目标。

我们还使用hudson将构建部署到我们的Web服务器。

答案 2 :(得分:0)

我的情况并不像你的情况那么复杂,所以我只能回答这个问题:

  

如何维护特定于目标服务器的配置设置?

我尝试外部化所有配置,以便我将完全相同的WAR文件部署到stage / prod。我使用Spring的上下文:property-placeholder标签。 WAR中有“默认”属性文件,这些文件被/etc/app/*.properties(Windows上的c:/ etc / app / *。属性)中的属性覆盖。

至于实际部署,我目前手动上传WAR文件,但计划在不久的将来实现自动化。