• 九江市委书记林彬杨主持召开市委常委会议 对市县机构改革提了这些要求 2019-04-10
  • 2018款奔驰E级购车指南 中低配是主力 2019-04-07
  • 264路胡乱发车,投诉一月依然如故。 2019-04-07
  • 张太雷烈士大学毕业证书回到故乡常州 2019-04-06
  • 日照市今年计划投资158亿 修建幸福公路助发展 2019-04-06
  • 吴青峰新歌口碑持续攀升 获赞“这很吴青峰”青峰 新歌 2019-04-03
  • 《国家人文历史》2018年第4期封面及目录 2019-04-03
  • 统计局:5月份经济运行主要指标呈现五大特点 2019-03-27
  • 罗品禧的专栏作者中国国家地理网 2019-03-27
  • 习近平同上海合作组织成员国领导人共同会见记者并讲话 2019-03-27
  • 陈扬勇谈“党的领导是中国特色社会主义最本质的特征” 2019-03-20
  • 解读习近平八一讲话:铭记辉煌历史 推进强军事业 2019-03-20
  • 发挥自身优势 奋力走在前列——习近平总书记在山东考察回访记 2019-03-19
  • 明年起全面供应国六标准汽柴油 2019-03-19
  • 异类非人思维。如一尼安德特人从2万年前发出的声音。 2019-03-16
  • 随笔-126  评论-247  文章-5  trackbacks-0

    项目结构

    proj
      |
      |— proj-model
      |      |
      |      |— src
      |      |— pom (jar)
      |      |
      |
      |— proj-dao
      |      |
      |      |— src
      |      |— pom (jar)
      |      |
      |
      |— proj-service
      |      |
      |      |— src
      |      |— pom (jar)
      |      |
      |
      |— proj-web
      |      |
      |      |— src
      |      |— pom (war)
      |      |
      |
      |— pom.xml (pom)
      |

    这里的 proj 项目分了 4 个???,它们分别是:proj-model(数据模型层)、proj-dao(数据库访问层)、proj-service(业务逻辑层)、
    proj-web(页面表现层)。下面我们来依次的来创建这几个项目(确保你的 maven 环境已经配置好,以下是 window 环境的 cmd 终端操作) 。

    创建??橄钅?

    01.创建 proj 项目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj
     
    02.创建 proj-model 项目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj-model
     
    03.创建 proj-dao 项目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj-dao
     
    04.创建 proj-service 项目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj-service
     
    05.创建 proj-web 项目
    mvn archetype:create -DgroupId=org.fanlychie -DartifactId=proj-web -DarchetypeArtifactId=maven-archetype-webapp
     
    06.将 proj-model、proj-dao、proj-service、proj-web 移动到 proj 目录里
    for /r /d %i in (proj-*) do move %i proj
     
    07.删除 proj/src 文件夹(proj 作为父???,不需要 src)
    rd /S /Q proj\src
     
    08.为 proj-web 创建 src/main/java 目录
    mkdir proj\proj-web\src\main\java
     
    09.为 proj-web 创建 src/test/java 目录
    mkdir proj\proj-web\src\test\java
     
    10.删除 proj-model、proj-dao、proj-service、proj-web 项目 src/main/java 的源文件(忽略错误)
    for /r /d %i in (proj\proj-*) do rd /S /Q %i\src\main\java\org
     
    11.删除 proj-model、proj-dao、proj-service、proj-web 项目 src/test/java 的源文件(忽略错误)
    for /r /d %i in (proj\proj-*) do rd /S /Q %i\src\test\java\org

    父???proj/pom.xml 配置

    作为父???,packaging 类型必须是 pom
    <groupId>org.fanlychie</groupId>
    <artifactId>proj</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    声明子???
    <modules>
      <module>proj-model</module>
      <module>proj-dao</module>
      <module>proj-service</module>
      <module>proj-web</module>
    </modules>
    在父??橹锌梢酝ü?dependencyManagement 对依赖的包进行统一的管理
    <properties>
      <spring.version>4.1.5.RELEASE</spring.version>
    </properties>
    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-dao</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-model</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-service</artifactId>
          <version>${project.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
        </dependency>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-webmvc</artifactId>
          <version>${spring.version}</version>
        </dependency>
      </dependencies>
    </dependencyManagement>
    配置完成之后,父??橐约案改?榈淖幽?椴换嵋肴魏蔚墓辜览?,这只是为了让子??槟芄患坛械玫秸庑┡渲?,这样做的好处是,在子??橹兄?br /> 需要声明 groupId 和 artifactId 不需要声明 version 就能准确的获取得到依赖的构件。这样一来,不仅能够使子??榈囊览蹬渲帽涞眉虻?,
    还能使项目范围内所有依赖的构件的版本能够得到统一,它们可以在父??橹型骋坏睦垂芾?,这样可以避免??橹溆捎诎姹静灰恢露⒌囊斐?。
    你还可以在父??橹型ü?pluginManagement 来对依赖的插件进行统一的管理
    <build>
      <pluginManagement>
        <plugins>
          <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.2.8.v20150217</version>
          </plugin>
        </plugins>
      </pluginManagement>
    </build>
    proj/pom.xml 完整的配置:
    <project xmlns="//maven.apache.org/POM/4.0.0" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation
    ="//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.fanlychie</groupId>
      <artifactId>proj</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>proj</name>
      <url>//maven.apache.org</url>
      <properties>
        <spring.version>4.1.5.RELEASE</spring.version>
      </properties>
      <modules>
        <module>proj-model</module>
        <module>proj-dao</module>
        <module>proj-service</module>
        <module>proj-web</module>
      </modules>
      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>org.fanlychie</groupId>
            <artifactId>proj-dao</artifactId>
            <version>${project.version}</version>
          </dependency>
          <dependency>
            <groupId>org.fanlychie</groupId>
            <artifactId>proj-model</artifactId>
            <version>${project.version}</version>
          </dependency>
          <dependency>
            <groupId>org.fanlychie</groupId>
            <artifactId>proj-service</artifactId>
            <version>${project.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
          </dependency>
          <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
          </dependency>
        </dependencies>
      </dependencyManagement>
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.eclipse.jetty</groupId>
              <artifactId>jetty-maven-plugin</artifactId>
              <version>9.2.8.v20150217</version>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
    </project>

    子???proj-model/pom.xml 配置

    作为子???,需要在 pom.xml 中声明其父???
    <parent>
      <groupId>org.fanlychie</groupId>
      <artifactId>proj</artifactId>
      <version>1.0-SNAPSHOT</version>
    </parent>
    GAV(groupId、artifactId、version)参考父???。
    maven 默认认为父??槭窃诘鼻跋钅?pom.xml 所在的目录的上一级目录中,这里的 proj 项目结构设计符合这个规则。如果你的项目结构并不是
    这样,你必须通过 <relativepath> 节点来指定你的父???pom.xml 所在的路径(默认是 <relativepath>../</relativepath>)。
    <parent>
      <groupId>org.fanlychie</groupId>
      <artifactId>proj</artifactId>
      <version>1.0-SNAPSHOT</version>
      <relativePath>../</relativePath>
    </parent>
    proj-model/pom.xml 完整配置:
    <project xmlns="//maven.apache.org/POM/4.0.0" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation
    ="//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>proj-model</artifactId>
      <packaging>jar</packaging>
      <name>proj-model project</name>
      <url>//maven.apache.org</url>
    </project>
    groupId 和 version 会从父??橹屑坛?,在子??橹胁恍枰倥渲?。

    子???proj-dao/pom.xml 配置

    为该??樯?proj-model 的依赖,因为该??樾枰褂?proj-model ??橹械氖菽P?
    <dependencies>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-model</artifactId>
      </dependency>
    </dependencies>
    proj-dao/pom.xml 完整配置:
    <project xmlns="//maven.apache.org/POM/4.0.0" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation
    ="//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>proj-dao</artifactId>
      <packaging>jar</packaging>
      <name>proj-dao project</name>
      <url>//maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-model</artifactId>
        </dependency>
      </dependencies>
    </project>

    子???proj-service/pom.xml 配置

    为该??樯?proj-model、proj-dao ??榈囊览?,因为该??樾枰褂?proj-model 中的数据模型和 proj-dao 中的数据库访问接口
    <dependencies>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-model</artifactId>
      </dependency>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-dao</artifactId>
      </dependency>
    </dependencies>
    proj-service/pom.xml 完整的配置:
    <project xmlns="//maven.apache.org/POM/4.0.0" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation
    ="//maven.apache.org/POM/4.0.0 //maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>proj-service</artifactId>
      <packaging>jar</packaging>
      <name>proj-service project</name>
      <url>//maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-model</artifactId>
        </dependency>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-dao</artifactId>
        </dependency>
      </dependencies>
    </project>

    子???proj-web/pom.xml 配置

    为该??樯?proj-model、proj-service 的依赖,因为 proj-web 需要使用 proj-model 中的数据模型和 proj-service 中的业务逻辑
    <dependencies>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-model</artifactId>
      </dependency>
      <dependency>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj-service</artifactId>
      </dependency>
    </dependencies>
    proj-web/pom.xml 完整的配置:
    <project xmlns="//maven.apache.org/POM/4.0.0" xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation
    ="//maven.apache.org/POM/4.0.0 //maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <parent>
        <groupId>org.fanlychie</groupId>
        <artifactId>proj</artifactId>
        <version>1.0-SNAPSHOT</version>
      </parent>
      <artifactId>proj-web</artifactId>
      <packaging>war</packaging>
      <name>proj-web project</name>
      <url>//maven.apache.org</url>
      <dependencies>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-model</artifactId>
        </dependency>
        <dependency>
          <groupId>org.fanlychie</groupId>
          <artifactId>proj-service</artifactId>
        </dependency>
      </dependencies>
      <build>
        <finalName>proj-web</finalName>
      </build>
    </project>

    导入项目到 eclipse

    配置完成之后,接下来可以将项目导入到 eclipse,在 eclipse 中右键 --> Import --> Maven --> Existing Maven Projects,将 proj
    项目所在的路径复制粘贴到 Root Directory 栏并敲回车,点击 Finish 按钮即可。

    导入后的项目结构

    示例源码下载:
    proj.zip
    示例使用 jetty 作为 web 服务器,选中 proj-web --> 右键 --> Run As --> Maven build... --> Goals 栏输入 jetty:run

    记得把 Resolve Workspace artifacts 选项勾选上,否则启动时会报错。访问方式://localhost/info

    打包

    选中父??橄钅?proj --> 右键 --> Run As --> Maven build... --> Goals 栏输入 clean package 并执行。
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Build Order:
    [INFO] 
    [INFO] proj
    [INFO] proj-model project
    [INFO] proj-dao project
    [INFO] proj-service project
    [INFO] proj-web project
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    . . . . . .
    [INFO] ------------------------------------------------------------------------
    [INFO] Reactor Summary:
    [INFO] 
    [INFO] proj ............................................... SUCCESS [  0.002 s]
    [INFO] proj-model project ................................. SUCCESS [  1.100 s]
    [INFO] proj-dao project ................................... SUCCESS [  0.102 s]
    [INFO] proj-service project ............................... SUCCESS [  0.069 s]
    [INFO] proj-web project ................................... SUCCESS [  0.552 s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
     
    可以看到,maven 在 build 的时候,会根据??橹涞囊览倒叵?,整理出一个 build 的顺序,然后再按顺序来 build。
    执行完 package 后,各个子??榈?target 目录下会输出相应的 JAR 或 WAR 包。


      
    posted on 2015-06-27 16:47 fancydeepin 阅读(23074) 评论(0)  编辑  收藏 所属分类: maven
  • 九江市委书记林彬杨主持召开市委常委会议 对市县机构改革提了这些要求 2019-04-10
  • 2018款奔驰E级购车指南 中低配是主力 2019-04-07
  • 264路胡乱发车,投诉一月依然如故。 2019-04-07
  • 张太雷烈士大学毕业证书回到故乡常州 2019-04-06
  • 日照市今年计划投资158亿 修建幸福公路助发展 2019-04-06
  • 吴青峰新歌口碑持续攀升 获赞“这很吴青峰”青峰 新歌 2019-04-03
  • 《国家人文历史》2018年第4期封面及目录 2019-04-03
  • 统计局:5月份经济运行主要指标呈现五大特点 2019-03-27
  • 罗品禧的专栏作者中国国家地理网 2019-03-27
  • 习近平同上海合作组织成员国领导人共同会见记者并讲话 2019-03-27
  • 陈扬勇谈“党的领导是中国特色社会主义最本质的特征” 2019-03-20
  • 解读习近平八一讲话:铭记辉煌历史 推进强军事业 2019-03-20
  • 发挥自身优势 奋力走在前列——习近平总书记在山东考察回访记 2019-03-19
  • 明年起全面供应国六标准汽柴油 2019-03-19
  • 异类非人思维。如一尼安德特人从2万年前发出的声音。 2019-03-16
  • 排列三走势图带连线 福彩3d新玩法规则 秒速时时彩规律 河南快赢481开奖视 浙江体彩6+118079 足球梦 中国福彩网老时时彩 体彩排列3出号走势图 江西多乐彩中奖走势图 重庆市幸运农场走势图 腾讯分分彩是什么游戏机 澳门彩票 竞彩足球让球胜平负技巧 代玩好运快3怎么样 新疆时时彩大奖 五选三彩票开奖结果