首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同配置文件的Maven配置文件

具有不同配置文件的Maven配置文件
EN

Stack Overflow用户
提问于 2015-04-10 13:07:45
回答 2查看 2.8K关注 0票数 3

我的项目结构如下所示

代码语言:javascript
复制
-src/main/java
-src/main/resources
 -dev
  -app.properties
 -prod
  -app.properties
 -sandbox
   -app.properties

定义了一个maven配置文件,如下

代码语言:javascript
复制
<profiles>
    <profile>
      <id>dev</id>
      <properties>
        <build.profile>dev</build.profile>
      </properties>
      <build>
        <resources>
          <resource>
            <directory>src/main/resources/dev</directory>
          </resource>
        </resources>
      </build>
    </profile>
    <profile>
      <id>prod</id>
      <properties>
        <build.profile>prod</build.profile>
      </properties>
      <build>
        <resources>
          <resource>
            <directory>src/main/resources/prod</directory>
          </resource>
        </resources>
      </build>
    </profile>
    <profile>
      <id>sandbox</id>
      <properties>
        <build.profile>sandbox</build.profile>
      </properties>
      <build>
        <resources>
          <resource>
            <directory>src/main/resources/sandbox</directory>
          </resource>
        </resources>
      </build>
    </profile>
  </profiles>

当我触发正确的配置文件(如mvn -pdev安装)时,试图从正确的子文件夹复制正确的属性。将让maven将app.properties文件从src/main/resource/dev文件夹中复制,然后放入我正在构建的jar中。

我的罐子看起来是这样的:

代码语言:javascript
复制
  +dev
  +prod
  +sandbox
  +META-INF
  +com
  -app.properties

问题是5文件夹只有一个属性文件,我不想要 prod沙箱文件夹。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-10 14:49:03

邓妮的回答会奏效的,但我就是这样做的

  1. 将子文件夹放入一个名为src/main/profile的文件夹中,如果您使用的是eclipse,那么将该文件夹添加为“源文件夹”非常重要。所以这个项目看起来是这样的 -src/主/资源 -src/main/profiles -prod -dev -ist

注意:您可以将所有的配置文件放在常见的位置,永远不要更改,将所有配置文件交叉到资源文件夹中等,然后将配置文件特定的配置文件分别放到每个子文件夹中。

最后的配置文件部分如下

代码语言:javascript
复制
<profiles>
    <profile>
      <id>dev</id>
      <properties>
        <build.profile>dev</build.profile>
      </properties>
      <build>
        <resources>
          <resource>
            <directory>src/main/profiles/dev</directory>
          </resource>
        </resources>
      </build>
    </profile>
    <profile>
      <id>prod</id>
      <properties>
        <build.profile>prod</build.profile>
      </properties>
      <build>
        <resources>
          <resource>
            <directory>src/main/profiles/prod</directory>
          </resource>
        </resources>
      </build>
    </profile>
    <profile>
      <id>sandbox</id>
      <properties>
        <build.profile>sandbox</build.profile>
      </properties>
      <build>
        <resources>
          <resource>
            <directory>src/main/profiles/sandbox</directory>
          </resource>
        </resources>
      </build>
    </profile>
  </profiles>

我之所以这样做,是因为Maven默认情况下试图将所有内容从/resource文件夹复制到jar中。

但使用jar插件,我可以得到我想要的,但我试图保持我的pom简单。

我在那里面临的主要问题是如何将文件排除在/resource文件夹中。如果有人知道更好的方法,请评论。

票数 2
EN

Stack Overflow用户

发布于 2015-04-10 14:13:41

也许您有一个插件,它不尊重build部分中的资源条目,并且使用src/main/resources作为资源文件夹。在这种情况下,我将更改文件夹结构如下:

代码语言:javascript
复制
src  
 - main  
  - resources-dev
  - resources-prod
  - resources-sandbox

并更改生成部分中的文件夹名称。这样,您就不会干扰标准的maven文件夹结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29562261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档