Maven多项目依赖配置

最近在学习Maven,把一个开源的项目改成maven管理,期间使用到了多项目,从网上查阅了一些资料,主要参考的是http://kyfxbl.iteye.com/blog/1680045,在此把自己的一些心得体会写出来,供大家学习交流。

关于maven的安装,在此就不进行阐述,请参考网上其他教程。

本实例由4个项目组成,其中,aggregator是父工程,同时承担聚合模块和父模块的作用,没有实际代码和资源文件;open-plagform-common是公共的java工程;open-platfor-web是公共的web文件,主要包括css、js等;open-bug-m是最终要发布的应用,形成war包。

一、建立一个Maven工程:aggregator

/aggregator

/src/main/java

/src/test/java

pom.xml

此工程主要是父模块,聚合其他工程,没有实际代码和资源文件,最主要的是pom.xml文件,其主要内容如下:
Xml代码

<modelVersion>4.0.0</modelVersion>
  <groupId>cn.jess.platform</groupId>
  <artifactId>aggregator</artifactId>
  <version>0.0.1-SNAPSHOT</version>
<!-- 因为是父工程 ,因此此处的packaging必须为pom -->
  <packaging>pom</packaging>
  <name>aggregator</name>

  <modules>  
    <module>../open-platform-common</module>  
    <module>../open-platform-web</module>  
    <module>../open-bug-m</module>
  </modules>

  <!-- 配置部署的远程仓库 -->  
  <distributionManagement>  
    <snapshotRepository>  
      <id>nexus-snapshots</id>  
      <name>nexus distribution snapshot repository</name>  
      <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>  
    </snapshotRepository>  
  </distributionManagement>

  <build>  
     <pluginManagement>  
       <plugins>  

             <plugin>  
                 <groupId>org.apache.maven.plugins</groupId>  
                 <artifactId>maven-resources-plugin</artifactId>  
                 <version>2.6</version>  
                 <configuration>  
                     <encoding>UTF-8</encoding>  
                 </configuration>  
             </plugin>  

             <plugin>  
                 <groupId>org.apache.maven.plugins</groupId>  
                 <artifactId>maven-compiler-plugin</artifactId>  
                 <version>2.5.1</version>  
                 <configuration>  
                     <encoding>UTF-8</encoding>
                     <source>1.6</source>
                     <target>1.6</target>  
                 </configuration>  
             </plugin>  

         </plugins>  
     </pluginManagement>  
 </build>  

 <dependencyManagement>  

     <dependencies>  

         <dependency>  
             <groupId>com.sun</groupId>  
             <artifactId>tools</artifactId>  
             <version>1.6.0</version>  
             <scope>system</scope>  
             <systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>  
         </dependency>  

     </dependencies>  

 </dependencyManagement>

二、建立一个Maven工程:open-platform-common
此工程主要是项目中使用到的公共java类库,pom文件主要内容如下:
xml代码:

<!-- 由于存在parent工程,因此groupId和version可以省略,直接使用parent工程-->
  <modelVersion>4.0.0</modelVersion>
  <artifactId>open-platform-common</artifactId>
 <!-- 因为此工程要发布到webapp的lib目录下,因此为jar(不知道这样解释对否?) -->
 <packaging>jar</packaging>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>  
    <!-- 指定Maven仓库 -->
    <repositories>
        <!-- my的maven仓库 -->
        <repository>
            <id>myRepository</id>
            <name>local private nexus</name>
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
  <!-- 指定maven plugin仓库 -->
    <pluginRepositories>
        <!-- oschina的maven plugin仓库 -->
        <pluginRepository>
            <id>myPluginRepository</id>
            <name>local private nexus</name>
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
  <dependencies>
        <!-- 此处的类库根据自己的需要进行添加 -->
  </dependencies>
  <!-- 用来指定父工程-->
  <parent>
    <groupId>cn.jess.platform</groupId>
    <artifactId>aggregator</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../aggregator</relativePath>
  </parent>

三、建立一个Maven工程:open-platform-web
此工程主要是项目中使用到的公共web文件,pom文件主要内容如下:
xml代码:

<!-- 由于存在parent工程,因此groupId和version可以省略,直接使用parent工程-->
  <modelVersion>4.0.0</modelVersion>
  <artifactId>open-platform-web</artifactId>
<!-- 因为此工程要发布到webapp应用的根目录下,因此为war(不知道这样解释对否?) -->
  <packaging>war<ng>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>  
    <!-- 指定Maven仓库 -->
    <repositories>
        <!-- my的maven仓库 -->
        <repository>
            <id>myRepository</id>
            <name>local private nexus</name>
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
  <!-- 指定maven plugin仓库 -->
    <pluginRepositories>
        <!-- oschina的maven plugin仓库 -->
        <pluginRepository>
            <id>myPluginRepository</id>
            <name>local private nexus</name>
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

  <parent>
    <groupId>cn.jess.platform</groupId>
    <artifactId>aggregator</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../aggregator</relativePath>
  </parent>
</project>

注意:此工程的WEB-INF目录下必须包含web.xml文件,否则在执行mvn时会报错

四、建立一个Maven工程:open-bug-m:
此工程是最终要发布的应用,其依赖于open-platform-common和open-platform-web,因此在pom文件中要加入这两个工程的依赖,pom文件内容如下所示:
xml代码:

<groupId>open-bug-m</groupId>
  <artifactId>open-bug-m</artifactId>
  <packaging>war</packaging>
  <name/>
  <description/>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <parent>
    <groupId>cn.jess.platform</groupId>
    <artifactId>aggregator</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <relativePath>../aggregator</relativePath>
  </parent> 
    <!-- 指定Maven仓库 -->
    <repositories>
        <!-- my的maven仓库 -->
        <repository>
            <id>myRepository</id>
            <name>local private nexus</name>
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
  <!-- 指定maven plugin仓库 -->
    <pluginRepositories>
        <!-- oschina的maven plugin仓库 -->
        <pluginRepository>
            <id>myPluginRepository</id>
            <name>local private nexus</name>
            <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
  <dependencies>
    <dependency>
      <groupId>cn.jess.platform</groupId>
      <artifactId>open-platform-common</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>cn.jess.platform</groupId>
      <artifactId>open-platform-web</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <type>war</type>
    </dependency>      
    <!-- 此处的类库根据自己的需要进行添加 -->


  </dependencies>
  <build>
    <finalName>open-bug</finalName>
    <plugins>
      <plugin>  
          <groupId>org.apache.maven.plugins</groupId>  
          <artifactId>maven-war-plugin</artifactId>
          <version>2.3</version>  
          <configuration>  
             <packagingExcludes>WEB-INF/web.xml</packagingExcludes>    
             <overlays>  
                <overlay>  
                  <groupId>cn.jess.platform</groupId>  
                  <artifactId>open-platform-web</artifactId>  
                </overlay>  
             </overlays>  
          </configuration>  
      </plugin>  
      <plugin>  
        <groupId>org.codehaus.cargo</groupId>  
        <artifactId>cargo-maven2-plugin</artifactId>  
        <version>1.2.3</version>  
        <configuration>  
          <container>  
            <containerId>tomcat7x</containerId>  
            <home>F:\apache-tomcat-7.0.42(x64)</home>  
          </container>  
          <configuration>  
            <type>existing</type>  
            <home>F:\apache-tomcat-7.0.42(x64)</home>  
            <properties>  
              <cargo.jvmargs>  
                  -Xdebug                    -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787  
              </cargo.jvmargs>  
            </properties>  
          </configuration>  
        </configuration>  
        <executions>  
          <execution>  
             <id>cargo-run</id>  
             <phase>pre-integration-test</phase>  
             <goals>  
                 <goal>run</goal>  
             </goals>  
          </execution>  
        </executions>  
    </plugin> 
    </plugins>
  </build>

关于maven-war-plugin和cargo-maven2-plugin的使用方法请参考网上其他使用教程。

所有上述四个工程准备就绪后,执行mvn install就可对工程项目进行部署。

现在存在的一个问题主要是:

如果把open-platform-common和open-platform-web工程合并为一个,则在open-bug-m不知道如何去引用它?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值