利用maven的resources、filter和profile实现不同环境使用不同配置文件

利用maven的resources、filter和profile实现不同环境使用不同配置文件

https://blog.csdn.net/zhuchunyan_aijia/article/details/50464720

 

pom.xml:

<project>
  <build>
    <fileName>app</fileName>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
      </resource>
      <resource>
        <directory>src/main/filters/META-INF/${env.name}/common</directory>
        <filtering>true</filtering>
        <targetPath>META-INF/common</targetPath>
      </resource>
    </resources>
  </build>
  <profiles>
    <profile>
      <id>dev</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <maven.val>abc</maven.val>
        <env.name>dev</env.name>
      </properties>
    </profile>
    <profile>
      <id>sit</id>
      <properties>
        <maven.val>def</maven.val>
        <evn.name>sit</env.name>
      </properties>
    </profile>
  </profiles>
</project>    

directory:

src/main/java
src/main/resources
src/main/filters/META-INF/dev/common/distribute-session.xml
src/main/filters/META-INF/sit/common/distribute-session.xml

maven command:

mvn clean install -DskipTests -Pdev
mvn clean install -DskipTests -Psit

===============================

不同的版本需要的配置文件不同:

<project> ......
<build> <finalName>tmcweb</finalName> <!--<resources>--> 注意这块不用了,使用profile自己的; <!--<resource>--> <!--<directory>src/main/resources</directory>--> <!--<filtering>true</filtering>--> <!--</resource>--> <!--</resources>--> <plugins> <plugin> 这里是一个插曲 <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <configurationFile>src/main/resources/generatorConfig.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> <dependencies> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.2</version> </dependency> </dependencies> </plugin> </plugins> </build> <profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <env>dev</env> </properties> <build> <resources> <resource> 在profile里面引入resource才可以exclude <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>META-INF/common/x-prod.xml</exclude> </excludes> </resource> </resources> </build> </profile> <profile> <id>prod</id> <properties> <env>prod</env> </properties> <build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <excludes> <exclude>META-INF/common/x-dev.xml</exclude> </excludes> </resource> </resources> </build> </profile> </profiles> </project>

可以在profile中指定build模块,进行某些war包时html文件的排除

<profile>
  <id>prod</id>
  <properties>
    <env>prod</env>
  </properties>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <packagingExcludes>index.html</packagingExcludes>
        </configuration>
      </plugin>
    <plugins>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
          <exclude>dev.properties</exclude>
        </excludes>
      </resource>
    </resources>
  </build>
</profile>