如何将maven开发目录结构与maven发布目录结构进行协调

时间:2014-05-30 20:01:47

标签: java eclipse maven

我为项目http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

使用标准的maven目录结构

然而,这是有问题的,因为配置文件将在jar文件中。有关从预定义位置读取配置文件为How to get the path of a running JAR file?

的讨论

但是我试图在没有任何配置文件的情况下打包我的jar文件,并使目录结构看起来与我们下载的任何其他开源项目类似

project|
        --lib
       |
        --conf
       |
        --docs
       |
        --src

我不想做任何源代码更改(例如:我的所有配置文件都在maven开发的源路径中,我只是直接读取文件而不预先添加路径);如果我必须在源代码中更改配置文件的路径,我该怎么做才能使路径在开发和生产中都能正常工作 我的问题

1)我怎样才能拥有当前的“开发”目录结构,但是我的“生产”版本目录看起来与任何apache(比如)项目类似

2)对于每个版本,我应该在pom.xml中做些什么更改,以便将版本号附加到jar并递增

我不想做任何源代码/ java代码更改(例如:我的所有配置文件都在maven开发的源路径中,我只是直接读取文件而不预先添加路径);如果我必须在源代码中更改配置文件的路径,我该怎么做才能使路径在开发和生产中都能正常工作

(我正在使用Maven和Eclipse)

3 个答案:

答案 0 :(得分:1)

在我的项目中,我使用maven assembly plugin可再分发的方式打包应用程序:

src/main/javasrc/main/resources下的所有内容都打包在主jar中(标准行为)。

然后使用程序集插件,我创建一个包含3个文件夹的zip:

  • /lib:包含主jar +所有依赖项
  • /bin:包含src/main/scripts maven源文件夹(启动shell脚本)中的其他文件
  • /etc(或/conf):包含src/main/config maven源文件夹(配置文件)中的其他文件

我发现此设置非常方便,因为它非常接近主jar中的初始maven standard layoutsrc/main/java + src/main/resources以及其他appart文件夹),仍然适应我的项目

答案 1 :(得分:0)

您可以在Maven Resource Plugin中提及这些资源目录来使用现有资源。

将以下代码添加到pom.xml的构建(标记)部分

<resources>
 <resource>
   <directory>[your folder here]</directory>
 </resource>
</resources>

你可以在这里添加几个非maven标准资源(其他任何src / main / resources)。

答案 2 :(得分:0)

我想根据我挖掘的内容分享更多提示(@superbob提供了很好的解释)。 这说起来容易做起来....

我想创建jar(可执行文件)并将此jar文件复制到zip(以及其他一些目录以便发布到生产中)...如果您可以查看现有的pom文件而不是摆弄现有的pom,这很容易

在这里查看现有项目(pom.xml)http://www.petrikainulainen.net/programming/tips-and-tricks/creating-a-runnable-binary-distribution-with-maven-assembly-plugin/

在我的情况下,我有多个pom文件,它为像我这样的新手增加了另一层复杂性..在这里查看maven程序集插件的多模块示例http://maven.apache.org/plugins/maven-assembly-plugin/examples/multimodule/index.html

最后但并非最不重要的是,运行以下命令以确保已创建程序集

   mvn  clean install package assembly:single