繁体   English   中英

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

[英]Deploying a jar file and external resource files with Maven

我是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 

我首先在pom.xml添加<resources>元素

<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包含在其中,那么将不会那么容易)

因此,主要问题是:

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

像其他响应一样,我建议您需要考虑一种持续集成方法。 我以前在Jenkins上有很好的经验。 它是免费的,并具有很多功能。 它还拥有一个开发了一系列插件的大型社区:

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

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

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

Maven是构建工具,而不是部署工具。 对于部署到诸如Test,Q&A或Prod之类的环境,其他工具则更适合诸如Chef,Puppet,或者可能只是一个简单的shell脚本等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM