`
frank-liu
  • 浏览: 1665341 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用maven创建多工程项目

 
阅读更多

简介

    因为在工作中经常要使用到maven做工程开发。很多时候我们开发的项目不仅仅是一个单独的工程,出于更多的可重用和部署的目的,我们在大多数的情况下会使用多个工程进行开发。因此怎么使用maven来创建多工程的项目就有必要总结一下。在前面的一些文章里已经讨论过了maven相关的基础设置。

 

详细步骤

创建父工程

    通常的情况下,我们是希望创建一个父工程,它将作为一个所有工程的公共目录。里面包含有整个大的项目的描述。

    比如说,我们执行如下命令: 

 

mvn archetype:generate -DgroupId=com.yunzero -DartifactId=cloud-parent -DinteractiveMode=false

   

系统会输出一大堆如下的内容: 

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:2.2:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO] 
[INFO] <<< maven-archetype-plugin:2.2:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO] 
[INFO] --- maven-archetype-plugin:2.2:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Batch mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.0
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /home/frank/programcode/maven
[INFO] Parameter: package, Value: com.yunzero
[INFO] Parameter: groupId, Value: com.yunzero
[INFO] Parameter: artifactId, Value: cloud-parent
[INFO] Parameter: packageName, Value: com.yunzero
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /home/frank/programcode/maven/cloud-parent
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.855 s
[INFO] Finished at: 2015-05-04T21:12:33+08:00
[INFO] Final Memory: 15M/303M
[INFO] ------------------------------------------------------------------------

 

    这个时候,如果我们去看当前的目录,会生成一个名字为cloud-parent的目录。上述的命令就是生成一个名字为cloud-parent的工程,而且里面的工程默认包空间名为com.yunzero。这个生成的目录结构如下图:

 

 

 

     除了生成的目录结构之外,我们再来看看生成的pom.xml文件的内容。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.yunzero</groupId>
  <artifactId>cloud-parent</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>cloud-parent</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

     这是一个典型的maven工程pom描述文件。而且它默认的打包方式是生成jar文件。在这里,因为我们需要将该工程作为项目的父目录,所以需要将<packaging>元素里面的jar改为pom。同时,该文件家生成的其他文件并不是必要的,我们可以将它们都删除。这样,我们就得到一个仅仅包含有pom.xml文件的目录。

 

生成子工程

   假设我们还需要生成两个子工程,分别为cloud-common, cloud-service。我们可以在该工程目录中执行命令:

 

mvn archetype:generate -DgroupId=com.yunzero -DartifactId=cloud-common -DinteractiveMode=false

    这个时候,我们会发现在当前的目录里多了一个cloud-common的目录。这样整体的项目结构如下图:

 

 

     如果我们再去看当前目录下的pom.xml文件,会发现里面多了这么一个部分:

 

<modules>
    <module>cloud-common</module>
</modules>

     这部分就正好定义了父工程和所包含的子工程之间的关系。

     按照同样的方法,我们再定义另外一个工程cloud-service。

    

mvn archetype:generate -DgroupId=com.yunzero -DartifactId=cloud-service -DinteractiveMode=false

 

    这样,整个的工程就生成了。我们可以运行命令mvn clean install来编译和打包工程。

 

导入eclipse 

    执行命令:

mvn eclipse:eclipse

     在结束后运行eclipse,选择导入工程:

     然后选择我们刚才创建的工程所在目录:

 

     选择确定之后我们将看到有如下的两个工程被选择上了:

 

 

     这样,一个多工程的项目就被创建了。

 

  • 大小: 14.8 KB
  • 大小: 17.1 KB
  • 大小: 49.6 KB
  • 大小: 67.7 KB
  • 大小: 85.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics