使用 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\... 中的本地存储库或外部存储库(在安装和部署阶段)。

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

所以主要问题是:

  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 是构建工具而不是部署工具。对于测试、问答或生产等环境的部署,其他工具更合适,如 Chef、Puppet 或者可能只是一个简单的 shell 脚本等