【springcloud合集】03:IDEA新建父工程project

一條IT發表於2020-11-05

一個畢業後差一點進大廠的程式設計師的進階之路——既為鞏固知識,也為增長粉絲

個人微信公眾號【一條IT】,每天分享軟體,資源,教程,福利。

 

理解版本和理論之後正式進入編碼階段。

原則:約定 > 配置 > 編碼 

首先新建父工程

主要步驟

new maven工程

確定總工程的名字

配置maven(修改成阿里雲映象下載)

字元編碼

註解生效啟用

Java版本選8

*File Type過濾和預設作者模板

1.新建maven工程

模板選擇xxxxxxx-site

補充知識:maven各模板的區別

新建Maven project專案時,需要選擇archetype。

archetype的意思是模板原型,是一個Maven專案模板工具包。一個原型被定義為從其中相同型別的所有其它事情是由一個原始圖案或模型。名稱配合,因為我們正在努力提供一種系統,該系統提供了一種生成Maven專案的一致的手段。原型將幫助作者為使用者建立Maven專案模板,併為使用者提供了手段,產生的這些專案模板引數化的版本。

maven提供的41個骨架原型分別是:

1: appfuse-basic-jsf (建立一個基於Hibernate,Spring和JSF的Web應用程式的原型) 
2: appfuse-basic-spring(建立一個基於Hibernate,Spring和Spring MVC的Web應用程式的原型) 
3: appfuse-basic-struts(建立一個基於Hibernate,Spring和Struts 2的Web應用程式的原型) 
4: appfuse-basic-tapestry(建立一個基於Hibernate,Spring 和 Tapestry 4的Web應用程式的原型) 
5: appfuse-core(建立一個基於Hibernate,Spring 和 XFire的jar應用程式的原型) 
6: appfuse-modular-jsf(建立一個基於Hibernate,Spring和JSF的模組化應用原型) 
7: appfuse-modular-spring(建立一個基於Hibernate, Spring 和 Spring MVC 的模組化應用原型) 
8: appfuse-modular-struts(建立一個基於Hibernate, Spring 和 Struts 2 的模組化應用原型) 
9: appfuse-modular-tapestry (建立一個基於 Hibernate, Spring 和 Tapestry 4 的模組化應用原型) 
10: maven-archetype-j2ee-simple(一個簡單的J2EE的Java應用程式) 
11: maven-archetype-marmalade-mojo(一個Maven的 外掛開發專案 using marmalade) 
12: maven-archetype-mojo(一個Maven的Java外掛開發專案) 
13: maven-archetype-portlet(一個簡單的portlet應用程式) 
14: maven-archetype-profiles() 
15:maven-archetype-quickstart() 
16: maven-archetype-site-simple(簡單的網站生成專案) 
17: maven-archetype-site(更復雜的網站專案) 
18:maven-archetype-webapp(一個簡單的Java Web應用程式) 
19: jini-service-archetype(Archetype for Jini service project creation) 
20: softeu-archetype-seam(JSF+Facelets+Seam Archetype) 
21: softeu-archetype-seam-simple(JSF+Facelets+Seam (無殘留) 原型) 
22: softeu-archetype-jsf(JSF+Facelets 原型) 
23: jpa-maven-archetype(JPA 應用程式) 
24: spring-osgi-bundle-archetype(Spring-OSGi 原型) 
25: confluence-plugin-archetype(Atlassian 聚合外掛原型) 
26: jira-plugin-archetype(Atlassian JIRA 外掛原型) 
27: maven-archetype-har(Hibernate 存檔) 
28: maven-archetype-sar(JBoss 服務存檔) 
29: wicket-archetype-quickstart(一個簡單的Apache Wicket的專案) 
30: scala-archetype-simple(一個簡單的scala的專案) 
31: lift-archetype-blank(一個 blank/empty liftweb 專案) 
32: lift-archetype-basic(基本(liftweb)專案) 
33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/]) 
34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/]) 
35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/]) 
36: myfaces-archetype-helloworld(使用MyFaces的一個簡單的原型) 
37: myfaces-archetype-helloworld-facelets(一個使用MyFaces和Facelets的簡單原型) 
38: myfaces-archetype-trinidad(一個使用MyFaces和Trinidad的簡單原型) 
39: myfaces-archetype-jsfcomponents(一種使用MyFaces建立定製JSF元件的簡單的原型) 
40: gmaven-archetype-basic(Groovy的基本原型) 
41: gmaven-archetype-mojo(Groovy mojo 原型)

(41中骨架原文連結:http://www.cnblogs.com/iusmile/archive/2012/11/14/2770118.html)

2.確定總工程名字

springcloud整體架構是一個總的父工程和各分支模組,在新建maven時輸入的名字是總的工程名字,以後再新建各種moudles。

這個我用的名字是cloud2020

3.配置maven

這裡不用IDEA的maven,用自己安裝的,下載速度快。

修改配置檔案maven/conf/settings.xml,將官方的註釋掉,新增下面程式碼

 <mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>https://maven.aliyun.com/nexus/content/repositories/central/</url>
    <mirrorOf>central</mirrorOf>
    </mirror>

4.設定字元編碼utf-8

開啟設定快捷鍵:ctrl+alt+s

5.註解生效啟用

6.選擇Java版本8

7.File Type過濾和預設作者模板(可選)

file type:過濾掉和編碼無關的檔案,如.idea,是介面簡潔

預設作者模板:每次新建檔案都會自動註釋說明作者和建立時間

配置父工程pom.xml

1.刪除src整個,只留pom.xml

2.替換pom.xml內容

<?xml version="1.0" encoding="UTF-8"?>

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.li.springcloud</groupId>
  <artifactId>cloud2020</artifactId>
  <version>1.0-SNAPSHOT</version>

  <modules>
    <module>cloud-provider-payment8001</module>
  </modules>
  <packaging>pom</packaging>

  <!-- 統一管理jar包版本 -->
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <junit.version>4.12</junit.version>
    <log4j.version>1.2.17</log4j.version>
    <lombok.version>1.16.18</lombok.version>
    <mysql.version>5.1.47</mysql.version>
    <druid.version>1.1.16</druid.version>
    <mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version>
  </properties>

  <!-- 子模組繼承之後,提供作用:鎖定版本+子modlue不用寫groupId和version  -->
  <dependencyManagement>
    <dependencies>
      <!--spring boot 2.2.2-->
      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.2.2.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--spring cloud Hoxton.SR1-->
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Hoxton.SR1</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <!--spring cloud alibaba 2.1.0.RELEASE-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.1.0.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>${druid.version}</version>
      </dependency>
      <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis.spring.boot.version}</version>
      </dependency>
      <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
      </dependency>
      <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>${lombok.version}</version>
        <optional>true</optional>
      </dependency>
    </dependencies>
  </dependencyManagement>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

貼上完成後右下角點選開啟自動匯入,等待下載依賴,時間很長。

 <dependencyManagement>的作用

1.統一管理子工程的版本,如果子工程想使用和父工程一樣的版本,可以省去groupid和version

2.如果寫了版本,則以寫的為準

3.父工程只起到版本管理功能,沒有下載依賴功能,子工程裡沒寫的依賴不會下載

跳過單元測試

總結

到此,父工程已經建完,以後的moudle全在此目錄新建並且版本交給父工程管理,要注意區分子工程和父工程的pom檔案,不要改錯了。

下一節將建立第一個微服務工程——支付模組

 

 

 

 

 

 

 

 

 

相關文章