zoukankan      html  css  js  c++  java
  • Maven学习(五)使用Maven构建多模块项目

    使用Maven构建多模块项目

    一般的web项目构成:

    建立解决方案目录parent

    首先使用命令进入到我们需要建立maven项目的目录:

    mvn archetype:generate -DgroupId=com.lsk.mavenProject -DartifactId=parent -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    在 D:java est下出现parent,进入,将src文件夹删除,然后修改pom.xml文件:将<packaging>jar</packaging>修改为<packaging>pom</packaging>,pom表示它是一个被继承的模块。

    如果命令一直停留在:[INFO] Generating project in Batch mode,请参考:maven(二)

    创建domain、dao、service层

    进入到新创建的parent,创建domian模块:

    创建成功后,修改domain目录中的pom.xml文件,把<groupId>com.lsk.maven</groupId><version>1.0-SNAPSHOT</version>去掉,加上<packaging>jar</packaging>,因为groupId和version会继承system-parent中的groupId和version,packaging设置打包方式为jar:

    <?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.lsk.maven</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>domain</artifactId>
      <packaging>jar</packaging>
      <name>domain</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>

    创建dao模块,方法和上面一样:

    创建好后,修改dao目录中的pom.xml文件,修改和domain的一样的方式,不过,需要添加对system-domain模块的依赖,修改后的内容如下:

    <?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.lsk.maven</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>dao</artifactId>
      <packaging>jar</packaging>
      <name>dao</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <!--dao需要使用到domain中的类,所以需要添加对domain模块的依赖-->
        <dependency>
          <groupId>com.lsk.maven</groupId>
          <artifactId>domain</artifactId>
          <version>${project.version}</version>
        </dependency>
    
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>  
    </project>

    创建service:

    创建方式和pom.xml修改方式,和上面的一样,不过注意,这次要添加对dao模块的引用,那我们还要不要添加对domain模块的引用呢?不需要,因为虽然service依赖dao和domain,因为dao已经依赖了system-domain,我们只添加对dao的引用就可以啦。

    创建web

    创建web,命令和上面的模块的创建方法不太一样:

     

    mvn archetype:generate -DgroupId=com.lsk.maven -DartifactId=web -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

     修改web下的pom.xml文件,并添加对service的引用,和上面的修改方式一样,但是,注意,web项目的打包方式是war!!!!

     项目层级结果及运行

    现在看parent下的pom.xml

    如何运行呢?最后运行的肯定是web,我们可以给他装个jetty插件,修改web下的pom.xml:

    <?xml version="1.0"?>
    <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>com.lsk.maven</groupId>
        <artifactId>parent</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>web</artifactId>
      <packaging>war</packaging>
      <name>web Maven Webapp</name>
      <url>http://maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>com.lsk.maven</groupId>
          <artifactId>service</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
      <build>
        <finalName>web</finalName>
        <plugins>
            <!--配置Jetty插件-->
            <plugin>
                <groupId>org.mortbay.jetty</groupId>
                <artifactId>maven-jetty-plugin</artifactId>
            </plugin>
        </plugins>
      </build>
    </project>

    我们执行:mvn clean install命令:

     进入web目录,启动jetty:

    mvn jetty:run

    浏览器访问:

    可以使用Ctrl+c停止jetty。

     导入到Eclipse

  • 相关阅读:
    codeforces 980A Links and Pearls
    zoj 3640 Help Me Escape
    sgu 495 Kids and Prizes
    poj 3071 Football
    hdu 3853 LOOPS
    hdu 4035 Maze
    hdu 4405 Aeroplane chess
    poj 2096 Collecting Bugs
    scu 4444 Travel
    zoj 3870 Team Formation
  • 原文地址:https://www.cnblogs.com/ericli-ericli/p/6907691.html
Copyright © 2011-2022 走看看