2011-05-17 40 views
2

我的webapp主要包含两个工件,java-server.jar和js-client.war。两者都被聚合/覆盖并获得目标环境的附加属性文件。最后,我得到了战争档案。创建webapp war发布'maven way'

一些war文件是使用tomcat进行部署的:通过脚本部署一些文件,但在这一点上应该没有关系。

有几件事情我不和我的做法一样:

  • 服务器和客户端发布使用Maven释放小插件,最终的Web应用程序是没有的。
  • 只是通过最终的战争文件,我无法确定它是由哪个服务器构建的。
  • 我通常需要同时使用多个客户端/服务器组合:当我使用稳定版本构建测试版服务器时,每晚构建服务器应使用最新的快照。

如何维护,发布和部署(以maven回购)stable/beta webapps?如何维护目标服务器特定的配置设置?你如何保持不同的版本?你有很多分支机构吗?

谢谢,扬

+0

这两个项目都有共同的父母POM项目吗? – 2011-05-17 09:39:17

回答

0

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

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

+0

我的问题不是如何开始构建,而是如何配置用于构建不同目标平台的maven和subversion。 – Jan 2011-05-22 20:12:01

2

我在做什么用詹的额外的Maven构建步骤,每次构建后执行

tomcat:deploy 

。使用正确的maven配置文件,将构建指向我们的开发服务器。然后,当我们想要推送到分段时,我们使用maven发布插件(再次与Jenkins)创建一个版本号不是快照的版本。假设我们然后释放2.0beta3到分期。这与像做:

tomcat:deploy -P staging-deploy 

配置文件,然后确保我们推到临时服务器,而不是开发服务器的用POM条目是这样的:

<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之外完成。我只是不相信行家不:-)

0

我的情况是不是和你的一样复杂的突破,所以我只能回答这个问题:

你如何保持目标服务器的具体配置设置?

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

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

+0

也是一个可能的解决方案。但在目标系统上的svn与configfiles配置文件...我不知道什么更好。 – Jan 2011-08-19 10:46:24

+0

我在WAR中放置了合理的默认值,并允许它们在目标系统上被覆盖。这也允许我更改属性并重新启动应用程序服务器,而无需构建/部署应用程序。我发现这对我的经历是一个巨大的好处,但我相信有人会争辩另一方。 – Luke 2011-08-19 15:47:00