maven聚合多模块 application.properties放在哪?

clipboard.png

如图所示,我是放在gls_admin_web的resources下面还是gls_core的resources下面?

阅读 7.7k
4 个回答

看具体情况吧;
如果web引用core则application.pproperties放在web下;
如果不存在这两个moudle互相调用的情况每个下边都需要

我都是这样做的:

  1. module特定的application.properties片段放到module里,形如src/main/resources/application-xxx.properties
  2. webapp里利用maven-dependency-plugin将module里的application-xxx.properties 在打包的时候copy出来
  3. 使用maven-antrun-plugin将这些片段concat成一个application.properties文件
  4. 利用maven-assembly-plugin将application.properties和打出来的war包打成一个tar包

pom.xml

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>build-info</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- 以下都是给打成可发布的包用的 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.10</version>
        <configuration>
          <artifactItems>
            <artifactItem>
              <groupId>a.b.c</groupId>
              <artifactId>xxx</artifactId>
              <version>vvv</version>
              <type>jar</type>
              <overWrite>true</overWrite>
              <outputDirectory>target/assembly-tmp</outputDirectory>
              <includes>application-xxx.properties</includes>
            </artifactItem>
            <!-- 更多 artifactItem -->
          </artifactItems>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>unpack</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.8</version>
        <configuration>
          <target>
            <concat destfile="${project.build.directory}/assembly-tmp/application.properties" force="yes">
              <fileset dir="${project.build.directory}">
                <include name="assembly-tmp/application-*.properties"></include>
              </fileset>
            </concat>
          </target>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <descriptor>${project.basedir}/settings.xml</descriptor>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!-- 以上都是给打成可发布的包用的 -->

    </plugins>
  </build>

maven-assembly-plugin settings.xml:

  <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
    <id>bin</id>
    <formats>
      <format>tar</format>
    </formats>


    <!-- see: http://maven.apache.org/pom.html#The_Super_POM -->
    <fileSets>

      <fileSet>
        <directory>${project.build.directory}/assembly-tmp</directory>
        <outputDirectory>/</outputDirectory>
        <useDefaultExcludes>true</useDefaultExcludes>
        <includes>
          <include>application.properties</include>
        </includes>
      </fileSet>

      <fileSet>
        <directory>${project.build.directory}</directory>
        <outputDirectory>/</outputDirectory>
        <useDefaultExcludes>true</useDefaultExcludes>
        <includes>
          <include>${project.build.finalName}.${project.packaging}</include>
        </includes>
      </fileSet>
    </fileSets>

  </assembly>

可以分开放啊, spring.profile.active可以指定用哪些.
比如有application-gls_admin_web.yml, applicaiton-gls_core.yml
application.ymlspring:profile:active: gls_admin_web, gls_core就可以

新手上路,请多包涵

请问 这个问题怎么解决的。望指导~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题