Maven配置文件与不同的配置文件

时间:2015-04-10 13:07:46

标签: maven maven-2 maven-3

我的项目结构看起来像这样

-src/main/java
-src/main/resources
 -dev
  -app.properties
 -prod
  -app.properties
 -sandbox
   -app.properties

定义了maven个人资料,就像这个

一样
<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 install 。将让maven从 src / main / resource / dev 文件夹中复制 app.properties 文件,然后放入我正在构建的jar中

我的罐子看起来像这样:

  +dev
  +prod
  +sandbox
  +META-INF
  +com
  -app.properties

问题是 5个带有单个属性文件的文件夹,我不想要dev prod沙盒文件夹。

2 个答案:

答案 0 :(得分:1)

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

src  
 - main  
  - resources-dev
  - resources-prod
  - resources-sandbox

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

答案 1 :(得分:1)

邓尼的答案会奏效,但我这样做了

  1. 将子文件夹放入名为src / main / profiles的文件夹中,如果您使用的是eclipse,将此文件夹添加为&#34;源文件夹&#34;则很重要。 所以项目看起来像这样

    -src /主/资源

    -src /主/简档

    -prod
    -dev 
    -ist
    
  2. 注意:您可以放置​​任何常见的内容,并且永远不会将所有配置文件更改为资源文件夹等log4j.properties 然后将配置文件特定的文件分别放入每个子文件夹中。

    ,最终的个人资料部分如下所示

    <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插件我可以得到我想要的东西,但我想保留我的 简单。

    我遇到的主要问题是如何从/ resource文件夹中排除文件。如果有人知道更好的方法,请发表评论