小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用eclipse創(chuàng)建maven的父子工程

 liang1234_ 2019-03-28

1、首先,確保eclipse中已經(jīng)配置了maven,如下圖:

2、New-Project-MavenProject...如下圖,選擇create a simple project,原因父項(xiàng)目需要建立的packaging為POM,子項(xiàng)目建立的packaging為jar或者war,勾選此處,在下一步中可以選擇packaging:

3、選擇打包方式

4、創(chuàng)建子工程,New-Project-Maven Module,再次提醒,父項(xiàng)目的packaging選擇POM,子項(xiàng)目選擇Jar或者war,順便說一句,一般來說,要創(chuàng)建在tomcat里運(yùn)行的項(xiàng)目,應(yīng)該是要創(chuàng)建war,比如本文說的service子項(xiàng)目和web子項(xiàng)目,應(yīng)該是創(chuàng)建成war,但是有例外是,如果要創(chuàng)建spring boot微服務(wù)項(xiàng)目,因?yàn)閟pring boot采用的都是富jar形式,就需要所有的子項(xiàng)目都為jar,這僅僅是個人理解,具體按照自己的需求建立。

5、選擇子工程的打包方式,這里設(shè)置為jar

6、寫到此時,已經(jīng)創(chuàng)建完成了,我們可以看一下項(xiàng)目架構(gòu)

7、我們把整個項(xiàng)目(父項(xiàng)目)上打包,編譯運(yùn)行,再看一下項(xiàng)目架構(gòu):

8、我們可以在DemoParent-Son2中引用項(xiàng)目DemoParent-Son1,直接在pom文件中加入依賴即可。

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.nancy</groupId>
  4. <artifactId>DemoParent-Son1</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <type>jar</type>
  7. </dependency>
  8. </dependencies>

這樣,在子項(xiàng)目DemoParent-Son2中就能直接調(diào)用子項(xiàng)目DemoParent-Son1中的類。

注意:子工程之間的引用:子工程若是web項(xiàng)目(對應(yīng)的自動達(dá)成的就是war包),可以引用子工程是java項(xiàng)目的工程。但是子工程是java項(xiàng)目卻不能引用子工程是web項(xiàng)目的工程。

9、寫到此時,項(xiàng)目已經(jīng)告一段落了,但是小編基于需求,又嘗試了一下maven的子項(xiàng)目war與war之間的引用。發(fā)現(xiàn)也是可以的。我們再新建一個web子工程DemoParent-Son3,在pom文件中引入子項(xiàng)目DemoParent-Son2,配置文件如下:

  1. <?xml version='1.0'?>
  2. <project xsi:schemaLocation='http://maven./POM/4.0.0 http://maven./xsd/maven-4.0.0.xsd' xmlns='http://maven./POM/4.0.0'
  3. xmlns:xsi='http://www./2001/XMLSchema-instance'>
  4. <modelVersion>4.0.0</modelVersion>
  5. <parent>
  6. <groupId>com.nancy</groupId>
  7. <artifactId>DemoParent</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. </parent>
  10. <artifactId>DemoParent-Son3</artifactId>
  11. <version>0.0.1-SNAPSHOT</version>
  12. <packaging>war</packaging>
  13. <dependencies>
  14. <dependency>
  15. <groupId>com.nancy</groupId>
  16. <artifactId>DemoParent-Son2</artifactId>
  17. <version>0.0.1-SNAPSHOT</version>
  18. <type>war</type>
  19. </dependency>
  20. </dependencies>
  21. <build>
  22. <finalName>DemoParent-Son3</finalName>
  23. <!-- 配置中有點(diǎn)說明下:把jar包自動拷貝到web-inf目錄地下,這個搞web開發(fā)都懂是為什么了 -->
  24. <plugins>
  25. <plugin>
  26. <artifactId>maven-antrun-plugin</artifactId>
  27. <executions>
  28. <execution>
  29. <id>copy-lib-src-webapps</id>
  30. <phase>package</phase>
  31. <configuration>
  32. <tasks>
  33. <delete dir='WebContent/WEB-INF/lib' />
  34. <copy todir='WebContent/WEB-INF/lib'>
  35. <fileset dir='target/${artifactId}/WEB-INF/lib'>
  36. <include name='*' />
  37. </fileset>
  38. </copy>
  39. </tasks>
  40. </configuration>
  41. <goals>
  42. <goal>run</goal>
  43. </goals>
  44. </execution>
  45. </executions>
  46. </plugin>
  47. </plugins>
  48. </build>
  49. </project>
兩個項(xiàng)目編譯、打包之后,生成的WAR文件(DemoParent-Son3.war和DemoParent-Son2.war)幾乎是相同的,盡管DemoParent-Son3項(xiàng)目還沒有任何類和資源。重要的是,兩個WAR歸檔文件中都有全部的依賴庫和配置。

根據(jù)Java規(guī)范,classpath不能指定WAR文件。這就意味著在編譯時,DemoParent-Son3項(xiàng)目無法訪問DemoParent-Son2項(xiàng)目中定義的類,所以在DemoParent-Son3l項(xiàng)目中,我們不能像常規(guī)類組件那樣擴(kuò)展或使用DemoParent-Son2定義的類。要解決這一問題,我們必須重新設(shè)置maven-war-plugin的一項(xiàng)缺省配置,該設(shè)置如下面所示:
  1. <build>
  2. <plugins>
  3. <plugin>
  4. <artifactId>maven-war-plugin</artifactId>
  5. <configuration>
  6. <attachClasses>true</attachClasses>
  7. </configuration>
  8. </plugin>
  9. <plugins>
  10. <build>
啟用attachClasses選項(xiàng)可以把JAR文件(DemoParent-Son2.jar)和標(biāo)準(zhǔn)的WAR文件同時安裝到Maven倉庫中。要訪問該JAR文件,我們需要像如下所示的那樣修改DemoParent-Son3項(xiàng)目的依賴列表。
  1. <dependencies>
  2. <dependency>
  3. <groupId>com.nancy</groupId>
  4. <artifactId>DemoParent-Son2</artifactId>
  5. <version>0.0.1-SNAPSHOT</version>
  6. <type>jar</type>
  7. <classifier>classes</classifier>
  8. <scope>provided</scope>
  9. </dependency>
  10. <dependency>
  11. <groupId>com.nancy</groupId>
  12. <artifactId>DemoParent-Son2</artifactId>
  13. <version>0.0.1-SNAPSHOT</version>
  14. <type>war</type>
  15. </dependency>
  16. </dependencies>
可以看到,DemoParent-Son3項(xiàng)目用DemoParent-Son2 WAR創(chuàng)建最終的Web歸檔文件,出于編譯需要,還使用了DemoParent-Son2的類(打包在JAR里)。我們將屬性classifier設(shè)置為classes,以此定義該從倉庫中選擇哪個工件。將scope設(shè)置為provided,則是告訴Maven只在編譯時需要該工件,運(yùn)行時則從其他地方獲得?!捌渌胤健碑?dāng)然就是指DemoParent-Son3項(xiàng)目的WAR工件,WAR插件會將WAR和JAR合并在一起?,F(xiàn)在已經(jīng)正確配置了依賴關(guān)系,那我們就開始測試一下。
在DemoParent-Son3中創(chuàng)建一個測試類Test,在測試類中調(diào)用一下DemoParent-Son2中的類Student,如下:
  1. public class Test {
  2. public static void main(String[] args) {
  3. Student s = new Student();
  4. s.setName('aaaa');
  5. System.out.println(s.getName() '1111111');
  6. }
  7. }
運(yùn)行一下,發(fā)現(xiàn)輸出欄有我們要的值。
源代碼鏈接https://pan.baidu.com/s/13baE0YjgbEGbM263MRWb5g
提取碼4y45

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多