maven多模块工程打包部署


一般maven多模块工程结构如下图,图中分为dao数据层和上层web层(当然还可以有service层),在进行多模块划分的时候,一般将dao层采用jar进行打包,web层进行war打包。

在进行war包部署时,发现dao是以jar包形式存在于lib包目录下,dao里引用的配置文件也都在自己的jar文件里,

如果部署服务器时,web层会引用不到dao里的配置文件。因此研究了下用maven进行合并打包的方法:

project
    |--business  (核心业务)
        |--business-api
        |--business-service
        |--business-message
        |--business-dao
        |--business-web
    |--common  (公共组件、服务、常量)
        |--common-component
            |--common-component-...
        |--common-service
        |--common-constants
        |--common-...
    |--management  (管理台)
        |--management-...
    |--taskserver (定时任务、批处理)
    |--msgserver  (消息队列)

 

1.确保dao pom.xml中有以下配置

<!--配置打包时不过滤非java文件开始  -->
  <!--说明,在进行模块化开发打jar包时,maven会将非java文件过滤掉,
  xml,properties配置文件等,但是这些文件又是必需的,
  使用此配置可以在打包时将不会过滤这些必需的配置文件。
  -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.js</include>
                    <include>**/*.json</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <!-- resource的filtering属性用来表示资源文件中的占位符是否需要被替换,true为需要替换。 -->
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

2.在web工程pom.xml添加以下插件配置

<build>
      <!-- war的项目配置需加上如下内容   start -->
      <plugins>
          <!-- 下述插件表示将business_service.0.0.1-SNAPSHOT.jar解压至web工程的target/classes目录中(即工程编译源码目录)
          子模块jar文件里的配置文件也会相应解压到target/classes目录中
           -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>unpack</id>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>com.ovit</groupId>
                                <artifactId>business_service</artifactId>
                                <version>0.0.1-SNAPSHOT</version>
                                <type>jar</type>
                                <overWrite>true</overWrite>
                                <outputDirectory>${project.build.directory}/classes</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
      <pluginManagement>
          <plugins>
              <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
              <plugin>
                  <groupId>org.eclipse.m2e</groupId>
                  <artifactId>lifecycle-mapping</artifactId>
                  <version>1.0.0</version>
                  <configuration>
                      <lifecycleMappingMetadata>
                          <pluginExecutions>
                              <pluginExecution>
                                  <pluginExecutionFilter>
                                      <groupId>
                                          org.apache.maven.plugins
                                      </groupId>
                                      <artifactId>
                                          maven-dependency-plugin
                                      </artifactId>
                                      <versionRange>
                                          [2.1,)
                                      </versionRange>
                                      <goals>
                                          <goal>unpack</goal>
                                      </goals>
                                  </pluginExecutionFilter>
                                  <action>
                                      <ignore></ignore>
                                  </action>
                              </pluginExecution>
                          </pluginExecutions>
                      </lifecycleMappingMetadata>
                  </configuration>
              </plugin>
          </plugins>
      </pluginManagement>
      <!-- war的项目配置需加上如下内容   end -->
  </build>

3.运行web工程,即可发现dao相关配置文件及源码已合并过来。(注意,此时在默认的war包的lib中还会包含dao的jar)

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM