⑴ maven構建多模塊怎麼訪問主頁面
在eclipse下構建maven項目,該項目由多個子模塊組成。
1.創建一個父項目
NEW -->project-->maven-->maven Project,點擊下一步,進入new maven Project的Select project name and location界面
,什麼也不做,直接下一步到Select an Archetype界面。
在這個界面中選擇maven-Archetype-site-simple,然後選擇下一步,進入選擇Enter a group id for the artifact的界面
,在group id 和artifact id中輸入你的group和artifact名稱。我用的分別是A和B,選擇完成。這時會在eclipse中生成一個項目,項目名是B。
此時B的pom文件如下所示:
[html] view plain
<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>A</groupId>
<artifactId>B</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<distributionManagement>
<site>
<id>website</id>
<url>scp://webhost.company.com/www/website</url>
</site>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
2.創建子項目
2.1 將項目B中的src文件刪除(可有可無,主要看個人需要)
2.2 選中項目B,點擊右鍵,選擇NEW -->project-->maven-->maven Mole,點擊下一步,在出現的界面中輸入子模塊的名稱C,點擊下一步,出現Select an Archetype界面。這時選擇maven-Archetype-site-quickStart或者maven-Archetype-webapp(構建web層時使用),然後選擇完成,即生成子項目C。
這時B的pom文件就變成了這樣(和上面的比只是多了個moles標簽):
[html] view plain
<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>A</groupId>
<artifactId>B</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<distributionManagement>
<site>
<id>website</id>
<url>scp://webhost.company.com/www/website</url>
</site>
</distributionManagement>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<moles>
<mole>C</mole>
</moles>
</project>
這時構建B的子項目完成,構建其他的子項目和此類似。
在構建第二個子項目D時可能在B中沒有及時出現,這時只要把B項目刷新下就可以了。
ps:
其實在構建多模塊的項目時,在選擇父項目的類型時是可以選擇任意的類型。選擇項目類型的界面如下:
對於這些非常規類型的項目,如果想要成為父項目,需要做如下一些改動:
1.將pom.xml文件中的<packaging>jar</packaging>改為<packaging>pom</packaging>,若不換為pom則在打包的時候父項目會產生一個target文件;如果沒有<packaging>pom</packaging>的可以在<version>0.0.1-SNAPSHOT</version>後面添加上這句話即可。
2.刪除除pom.xml外的所有文件,其中JRE System Library是不能直接刪除的,需要選擇中,並單擊右鍵Bulid Path-->Remove from bilud path即可移除。
這時的父項目就顯得很乾凈整潔了。
其實在普通的項目上是不允許構建子模塊的,能否在一個項目下創建子模塊,主要取決於是否有<packaging>pom</packaging>這個配置。如果有這個配置則任何項目都可以創建子模塊,硬要這樣創建的話整個項目會變的不倫不類。看來maven在判斷一個項目是否可以創建子模塊其實是取決於這個配置的。
⑵ 如何創建帶子模塊的Maven Web工程
當在Eclipse中創建Maven帶子模塊的Web工程時,對於新手經常會遇到無法部署Web站點的問題。下面就帶著大家走一遍帶子工程的Maven站點,順便講一下如何解決這個問題。
一、創建父工程
1、 創建Maven工程
首先,在Eclipse中新建一個Maven Project:
單擊「Next」,直到出現如下界面:
在這一步中,選中上面的「Create a simple project」復選框,然後單擊「Next」:
在上圖中,Group Id為組Id,也就是所有子模塊都公用的Id;Artifact Id是模塊Id,每個子模塊都有自己獨立的Artifact Id;Packaging一定要選擇「pom」,否則後面無法在它下面創建子模塊。
單擊「Finish」完成父工程創建。創建完畢後的工程如下圖所示:
二、創建web子模塊
接下來創建子模塊。
1、 創建web工程子模塊
首先創建web工程子模塊,在parent工程上單擊右鍵,選擇「New/Other」,打開如下所示窗口:
在該窗口中選擇「Maven Mole」,單擊「Next」:
在「Mole Name」中輸入「website」,單擊「Next」:
在該窗口的模板列表中選擇「maven-archetype-webapp」,單擊「Next」:
在該窗口中可根據需要修改version和Package(最好將Package改為「GroupId + Artifact Id」的格式,便於以後識別和管理),單擊「Finish」即可完成子模塊創建,如下圖所示:
2、 修改站點配置信息
對於新創建的站點,需要修改一下配合信息。打開website的Properties窗口,在「Java Build Path」下的Libraries選項卡中將J2SE的引用刪除,添加J2EE的引用,如下圖所示:
並將Java Compilier中的Java版本改為1.7:
然後切換到「Project Facets」節點,如下圖所示:
單擊右側的「Convert to faceted form…」,打開如下圖所示窗口:
在上圖中,選中「Project Facet」列表中的「Dynamic Web Mole」,先後單擊「Apply」按鈕和「OK」按鈕,完成工程類型轉換。
接下來創建組件包子模塊。
三、創建組件包子模塊
1、 創建組件包子模塊
同樣是在parent工程上單擊右鍵,新建Maven Mole,並在新彈出的窗口中輸入組件子模塊的名稱,如「component」,然後一直單擊next直到子模塊創建完畢。新創建的component子模塊結構如下圖所示:
2、 修改子模塊參數
與創建web子模塊類似,需要將component引用的Java版本改為JDK1.7。
3、 創建package
在component子模塊下創建名稱為「com.unitname.test.math」的package。
4、 創建類
在新創建的「com.unitname.test.math」package下新建名稱為「CCalculate」的class,並在裡面編寫方法,如下圖所示:
四、在web站點中調用組件
1、 引用組件包
打開website工程下的pom.xml,在裡面添加對component子模塊的引用,如下圖所示:
在上圖中,紅框圈住的部分即為需要增加的內容。其中,groupId和version節點中可以寫被引用的工程的對應內容,如果與本模塊相同,也可以像上圖中所示的使用「${project.groupId}」和「${project.version}」的方式。
2、 編寫servlet調用組件
在website模塊中創建一個名為「com.unitname.test.service」的package,並在下面新建一個名為matchservice的servlet,代碼如下圖所示:
此時代碼中會提示找不到javax.servlet包,可通過在站點中增加對servlet-api組件的引用:
也可通過在web站點的引用中添加對Server Runtime的引用的方式解決:
五、發布站點
1、 發布站點
將站點部署到tomcat中,並啟動。
2、 訪問servlet
在瀏覽器中輸入上面創建的servlet地址http://localhost:8080/website/mathservice?a=2&b=3,此時頁面出現如下錯誤:
Tomcat中也提示相同的錯誤:
此時還需要做一步操作:添加Deployment配置。
3、 添加DeploymentAssembly配置
在web子模塊上單擊右鍵,選擇「Properties」,在打開的窗口中選擇「Deployment Assembly」,如下圖所示:
在上圖中,打擊右側的「Add」按鈕,打開如下圖所示窗口:
在上圖所示窗口中選擇「Java Build Path Entries」,單擊「Next」:
在上圖中選擇「Maven Dependencies」,單擊「Finish」完成添加。
然後接著添加對Project的引用。在中選擇「Project」,單擊「Next」,打開如下圖所示窗口:
在上圖選擇要引用的工程component,單擊「Finish」完成添加。
重啟Tomcat,再次訪問該servlet,出現如下所示的正常結果
⑶ Maven 多模塊web項目如何集成到tomcat裡面去 然後怎麼運行
怎麼解決的呢 ?能否一起探討下 ?
⑷ Maven多Web模塊怎麼調試
tomcat好像只有部署的形式,不能以容器直接啟動?反正搞了半天 斷點就是打不上
給你jetty的配置
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${jetty.version}</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
<!-- 熱部署 -->
<scanIntervalSeconds>0</scanIntervalSeconds>
<httpConnector>
<port>9090</port>
</httpConnector>
<!-- <webAppConfig> <contextPath>/${project.artifactId}</contextPath>
</webAppConfig> -->
</configuration>
</plugin>
關於版本 ${jetty.version}
⑸ 多模塊的maven項目(只有一個是web項目),如何轉成gradle項目,麻煩大家指點一下。
你可以以filesystem(文件系統)的形式導入maven項目,然後你要編寫哪個子項目,再單獨的把那個子項目import 你看我的openweb和openweb-core。