使用Maven部署jar文件和外部资源文件

时间:2015-07-24 13:17:17

标签: java maven deployment build

我是Maven的新手,希望通过自动将多个文件和文件夹部署到生产环境来自动执行一些构建步骤:

my-app-0.7.0-jar-with-dependencies.jar (main application file)
conf.properties (configuration file that can be edited on the fly)
files_folder (folder that contains html, css etc. that can be edited on the fly)

我的项目结构如下:

src
   main 
      java
      resources (contains resources that should be included in the .jar)
conf.properties.jar 
files_folder 

我首先在<resources>

中添加了pom.xml元素
<resources>
    <resource>
        <directory>.</directory>
        <includes>
            <include>conf.properties</include>
            <include>files_folder/**/*.*</include>
        </includes>
        <targetPath>..</targetPath>
    </resource>
</resources>

这会将conf.propertiesfiles_folder移动到target目录,这很好(我可以复制.jar,conf.properties和files_folder并运行它们。)

但是,这些文件不会移动到C:\Users\my_name\.m2\...或外部存储库中的本地存储库(在安装和部署阶段)。

我的想法是应该将这些资源移到存储库中,因为:

  • 它们是程序运行所必需的
  • 可以非常快速地回滚到任何以前的版本(只需找到版本文件夹,你需要的一切就在那里;如果conf.properties和files_folder不会自动包含在那里那就不那么容易了)< / LI>

所以主要问题是:

  1. 这种思路是否合理?
  2. 如果合理,如何将这些外部资源包含在存储库中?

3 个答案:

答案 0 :(得分:0)

与其他回复一样,我建议您需要考虑持续集成方法。我以前和Jenkins一起工作的经验很丰富。它是免费的,并具有很多功能。它还有一个大型社区,开发了一系列插件:

https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

根据您正在部署的内容以及您希望如何部署它,一些可能对您的流程有帮助的插件是:

答案 1 :(得分:0)

您可以将这些文件保存在src / main / resources / META-INF中,而不是将这些文件保存在类路径中。因此,当您使用maven构建项目时,如果您选择了包装作为耳朵     <artifactId>ProjectName</artifactId> <version>Version</version> <packaging>ear</packaging>
然后所有这些文件都将打包在jar中,并将在你的maven存储库中提供

答案 2 :(得分:0)

Maven是一个构建工具,而不是一个部署工具。对于像Test,Q&amp; A或Prod这样的环境的部署,其他工具更适合像Chef,Puppet或者可能只是简单的shell脚本等。