使用Eclipse創(chuàng)建Maven的Java WEB項(xiàng)目的兩種方式
前言
這里是基于jdk1.8,maven3.6.3,eclipse(2017版、氧氣版;也就是 eclipse-jee-oxygen-2-win32-x86_64 )的操作來(lái)示例。不同的版本可能會(huì)有一些差別,但整體上是不會(huì)有較大的變化。
1、第一種方式(選擇 archetype 方式)
通過(guò)選擇 archetype 來(lái)創(chuàng)建javaWeb項(xiàng)目
1.1、第一步:創(chuàng)建項(xiàng)目
1.2、第二步:配置jre
(可以忽略這一步的,為了防止其他亂七八糟的情況弄一下也好)。在這個(gè)eclipse版本下操作了這一步會(huì)自動(dòng)的創(chuàng)建出 Maven 相關(guān)的源文件夾,所以操作一下這一步也沒(méi)什么壞處。
1.3、第三步:配置tomcat
創(chuàng)建 javaWeb 項(xiàng)目在開(kāi)發(fā)和調(diào)試的時(shí)候大多數(shù)是用 tomcat 來(lái)進(jìn)行,在 Eclipse 中創(chuàng)建 Maven 項(xiàng)目并想使用 tomcat 進(jìn)行開(kāi)發(fā)調(diào)試,本人知道的有兩種方式配置 tomcat;一種是外部下載好的tomcat,另外一種是使用Maven的tomcat插件。
這里介紹的是配置外部tomcat。配置外部的tomcat可以使用它內(nèi)置的一些jar包依賴,比如說(shuō) servlet-api、jsp-api 等等其他的一些jar包,有了這些 jar 包依賴就不用在pom.xml文件里面去寫依賴內(nèi)容了,也就是有了這些個(gè)依賴不用在pom.xml文件里寫相關(guān)的依賴內(nèi)容就可以解決servlet相關(guān)的java類缺失而引起的一些編譯或者運(yùn)行的報(bào)錯(cuò)了,同時(shí)在項(xiàng)目開(kāi)發(fā)完了之后使用maven命令打包項(xiàng)目時(shí)也能避免把 servlet-api、jsp-api 等 jar 一起打包了,這樣就能避免打包后的項(xiàng)目和服務(wù)器上的 tomcat 有相同的 jar 包所引起的一些沖突問(wèn)題。
1.4、第四步:設(shè)置為WEB3.1
把servlet修改成3.1。打開(kāi)web.xml -----> 用下面的內(nèi)容把項(xiàng)目中的web.xml給替換掉。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <!-- 這個(gè)節(jié)點(diǎn)要與不要都行,或者修改一下標(biāo)簽里面的文本內(nèi)容 --> <display-name>Archetype Created Web Application</display-name> </web-app>
修改.settings文件夾下的 org.eclipse.wst.common.project.facet.core.xml 文件
1.5、第五步:配置Maven的編譯級(jí)別
Maven編譯級(jí)別指的是Maven項(xiàng)目構(gòu)建(build)過(guò)程中,用于指定Java源代碼編譯版本的設(shè)置。在這里所使用的 Maven 版本是maven3.6.3,它默認(rèn)的編譯級(jí)別是1.5,需要將這個(gè)默認(rèn)的級(jí)別更改為自己當(dāng)前安裝使用的 JDK 版本一樣的級(jí)別。Maven 插件的版本可能會(huì)隨著時(shí)間而更新,使用的時(shí)候應(yīng)該確保自己安裝和使用的 JDK 版本與 Maven 配置的編譯級(jí)別相匹配。下面介紹幾種配置Maven的編譯級(jí)別的方法。
1.5.1、第一種方法:使用 Maven 插件單獨(dú)為某個(gè)項(xiàng)目配置編譯級(jí)別
在pom.xml文件的<build>
節(jié)點(diǎn)里面的<plugins>...<plugins>
子節(jié)點(diǎn)來(lái)配置一個(gè)叫maven-compiler-plugin
的插件;這個(gè)插件就是Maven用于編譯項(xiàng)目的源代碼用的。
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xxx.demo</groupId> <artifactId>maven_javaweb</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>xxx</name> <url>http://maven.apache.org</url> <description>xxx</description> <dependencies> ... <!-- 這里的內(nèi)容是項(xiàng)目所需要的依賴,根據(jù)項(xiàng)目所需要的來(lái)編寫 --> </dependencies> <build> <plugins> <plugin> <!-- Maven 中用于編譯 Java 源代碼的插件 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version><!-- 這個(gè)節(jié)點(diǎn)也可以不寫 --> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding><!-- 這個(gè)節(jié)點(diǎn)也可以不寫 --> </configuration> </plugin> </plugins> </build> </project>
1.5.2、第二種方法:使用<properties>節(jié)點(diǎn)單獨(dú)為某個(gè)項(xiàng)目配置編譯級(jí)別
在pom.xml文件的<properties>
節(jié)點(diǎn)里面添加配置
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xxx</groupId> <artifactId>artifact_xxx</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>xxx</name> <url>http://maven.apache.org</url> <description>xxx</description> <properties> <!-- 寫上下面所示的這3個(gè)子節(jié)點(diǎn),就能設(shè)置當(dāng)前項(xiàng)目編譯級(jí)別 --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> ... <!-- 這里的內(nèi)容是項(xiàng)目所需要的依賴,根據(jù)項(xiàng)目所需要的來(lái)編寫 --> </dependencies> <build> ... <!-- 沒(méi)有內(nèi)容這個(gè)節(jié)點(diǎn)可以不用寫 --> </build> </project>
1.5.3、在settings.xml文件中全局設(shè)置
在Maven的settings.xml文件中添加上一段代碼,如下所示
<!-- 首先我們要在settings.xml文件中找到<profiles>標(biāo)簽,然后在此標(biāo)簽內(nèi)部粘貼如下配置:--> <profile> <id>jdk-1.8</id> <activation> <jdk>1.8</jdk> </activation> <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile>
對(duì)Maven的編譯級(jí)別設(shè)置好了以后,設(shè)置一下eclipse對(duì)這個(gè)項(xiàng)目的編譯級(jí)別。
1.6、第六步:修復(fù)Eclipse提示的錯(cuò)誤
1.7、第七步:設(shè)置Maven的源文件夾
這樣創(chuàng)建的maven項(xiàng)目,目錄可能是不全的。需要設(shè)置一下。
2、第二種方式(跳過(guò)archetype方式)
2.1、第一步:創(chuàng)建項(xiàng)目
2.2、第二步:創(chuàng)建web.xml
接下來(lái)創(chuàng)建需要?jiǎng)?chuàng)建web.xml文件。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>Archetype Created Web Application</display-name> </web-app>
2.3、第三步:配置Maven的編譯級(jí)別
接下來(lái)配置Maven的編譯級(jí)別。
關(guān)于配置Maven的編譯級(jí)別更詳細(xì)的內(nèi)容在1.5章節(jié)有介紹。
2.4、第四步:配置tomcat
要想將項(xiàng)目運(yùn)行跑起來(lái)的話,需要用到tomcat,這個(gè)tomcat可以是自己下載好的也可以是Maven的tomcat插件
如果是自己下載好的需要配置一下Library,如果是用Maven的tomcat插件需要添加一下servlet的依賴,不然在代碼里用Servlet相關(guān)的java類將會(huì)找不到,就會(huì)報(bào)錯(cuò)。
2.4.1、使用Maven的tomcat插件方式
在pom.xml文件中添加如下的代碼
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.xxx.demo</groupId> <artifactId>maven_javaweb</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>xxx</name> <url>http://maven.apache.org</url> <description>xxx</description> <!-- 這一段是配置Maven編譯級(jí)別用的 --> <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> </properties> <dependencies> <!-- 這里的內(nèi)容是項(xiàng)目所需要的依賴,根據(jù)項(xiàng)目所需要的來(lái)編寫 --> <dependency> <!-- 這里創(chuàng)建的javaweb項(xiàng)目是以一個(gè)簡(jiǎn)單的servlet作為示例。 由于是采用 Maven 的 tomcat 插件的方式,在編寫代碼的時(shí)候是缺失必要的javax.servlet.http.HttpServlet相關(guān)的類的, 所以需要在Maven的pom.xml的文件中添加上servlet的相關(guān)依賴。 --> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <!-- 如果不設(shè)置 <scope>provided</scope> 或者設(shè)置為 compile,在打包的時(shí)候會(huì)將 serlvet-api.jar 一起打包, 然后將打包好的 war 包部署到服務(wù)器(另外一個(gè)電腦)中的 tomcat 里面, 這樣會(huì)跟服務(wù)器中(另外一個(gè)電腦)的 tomcat 內(nèi)部存在的 servlet-api.jar 包沖突。會(huì)導(dǎo)致運(yùn)行出問(wèn)題。 這個(gè)涉及到的是Maven的依賴作用范圍的知識(shí),這里就不過(guò)多的介紹,有興趣自行去查找Maven的依賴作用范圍相關(guān)資料去學(xué)習(xí)。 --> <scope>provided</scope> </dependency> <!-- 如果還用到JSP的話,還要加上JSP相關(guān)依賴,記得還是要加上 <scope>provided</scope> 總的來(lái)說(shuō),如果使用到tomcat自帶jar包,將項(xiàng)目中依賴作用范圍設(shè)置為:provided 其他依賴可以默認(rèn) --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId><!-- 用不到這個(gè)依賴就把這個(gè)依賴給刪掉。 --> <version>2.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <plugins> <!-- 這個(gè)是tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <!-- 配置Tomcat端口號(hào),默認(rèn)為8080;雖然默認(rèn)是8080,但還是顯式地寫出來(lái),也可以自定義端口號(hào) --> <port>8081</port> <!-- 配置應(yīng)用的訪問(wèn)路徑,默認(rèn)為 ROOT 即 "/";雖然默認(rèn)是"/",但還是顯式地寫出來(lái),也可以自定義訪問(wèn)路徑 --> <path>/</path> <!-- URL按UTF-8進(jìn)行編碼,這樣就解決了中文參數(shù)亂碼。 --> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin> <!-- <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>2.1-alpha-2</version> <configuration></configuration> </plugin> --> </plugins> </build> </project>
注意:
由于是采用 Maven 的 tomcat 插件作為開(kāi)發(fā)調(diào)試使用的服務(wù)器,在編寫代碼的時(shí)候是缺失 servlet 相關(guān)類庫(kù)的(也就是缺失 servlet 相關(guān)依賴),所以需要在Maven的pom.xml的文件中添加上servlet的相關(guān)依賴。在添加 servlet 相關(guān)依賴的時(shí)候要注意將依賴作用范圍設(shè)為provided。如下圖所示:
tomcat 的插件可以在 tomcat 的官網(wǎng)上找到;http://tomcat.apache.org/maven-plugin.html,它里面現(xiàn)在有兩個(gè)版本,分別是tomcat6、tomcat7。這些版本都比較老舊,可能在項(xiàng)目開(kāi)發(fā)中并不適用,所以推薦在eclipse、IDEA等開(kāi)發(fā)工具中配置使用外部下載好的tomcat。
在eclipse中將tomcat插件運(yùn)行起來(lái)
2.4.2、配置外部下載好的tomcat
推薦使用配置外部下載好的tomcat,因?yàn)橥獠肯螺d好的 tomcat 可以自由的選擇版本;使用插件的方式,那些tomcat的版本版本都太低了,可能會(huì)出現(xiàn)各種問(wèn)題,并不一定適合項(xiàng)目所需要。前面1.3章節(jié)有介紹怎樣配置外部下載好的tomcat。點(diǎn)擊查看
3、介紹一下命令的方式創(chuàng)建Maven項(xiàng)目。
3.1、創(chuàng)建普通的 java 項(xiàng)目
使用 maven-archetype-quickstart 可以快速創(chuàng)建一個(gè)簡(jiǎn)單的 Maven 項(xiàng)目(就是一個(gè)普通的 java 項(xiàng)目,一般可以用在簡(jiǎn)單的 demo 或者用于測(cè)試一下代碼運(yùn)行情況。其他用途也行,只要合適就好。)。只需要用戶提供項(xiàng)目最基本的信息,就能生成項(xiàng)目的基本結(jié)構(gòu)及 POM 文件。
mvn archetype:generate -DgroupId=net.biancheng.www -DartifactId=helloMaven -Dversion=0.0.1-SNAPSHOT -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
參數(shù)說(shuō)明:
-DgroupId
: 項(xiàng)目組 ID,通常為組織名或公司網(wǎng)址的反寫。-DartifactId
: 項(xiàng)目名。-Dversion
: 版本-DarchetypeArtifactId
: 指定 ArchetypeId,maven-archetype-quickstart 用于快速創(chuàng)建一個(gè)簡(jiǎn)單的 Maven 項(xiàng)目。-DinteractiveMode
: 是否使用交互模式。
3.2、創(chuàng)建一個(gè)簡(jiǎn)單的 Web 應(yīng)用
上面介紹的 Maven 項(xiàng)目是普通的 java 項(xiàng)目打包類型是 JAR ,但在現(xiàn)今的互聯(lián)網(wǎng)時(shí)代,我們創(chuàng)建的大部分應(yīng)用程序都是 Web 應(yīng)用,在 Java 中 Web 應(yīng)用的打包方式是 WAR。使用 Maven 的 maven-archetype-webapp 模板可以創(chuàng)建一個(gè)簡(jiǎn)單的 Web 應(yīng)用。
mvn archetype:generate -DgroupId=net.biancheng.www -DartifactId=mavenWeb -Dversion=0.0.1-SNAPSHOT -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
-DgroupId
: 項(xiàng)目組 ID,通常為組織名或公司網(wǎng)址的反寫。-DartifactId
: 項(xiàng)目名。-Dversion
: 版本-DarchetypeArtifactId
: 指定 ArchetypeId,maven-archetype-webapp 模板可以創(chuàng)建一個(gè)簡(jiǎn)單的 Web 應(yīng)用。-DinteractiveMode
: 是否使用交互模式。
創(chuàng)建完成后里面的一些目錄是不全的,根據(jù)需要自行加上。
總結(jié)
到此這篇關(guān)于使用Eclipse創(chuàng)建Maven的Java WEB項(xiàng)目的兩種方式的文章就介紹到這了,更多相關(guān)Eclipse創(chuàng)建Maven Java WEB項(xiàng)目?jī)?nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
fasterxml jackson反序列化時(shí)對(duì)于非靜態(tài)內(nèi)部類報(bào)錯(cuò)問(wèn)題及解決
這篇文章主要介紹了fasterxml jackson反序列化時(shí)對(duì)于非靜態(tài)內(nèi)部類報(bào)錯(cuò)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08spring boot實(shí)戰(zhàn)之本地jar包引用示例
本篇文章主要介紹了spring boot實(shí)戰(zhàn)之本地jar包引用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10Java中notify和notifyAll的區(qū)別及何時(shí)使用
本文主要介紹了Java中notify和notifyAll的區(qū)別及何時(shí)使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09SpringBoot項(xiàng)目發(fā)送釘釘消息功能實(shí)現(xiàn)
在工作中的一些告警需要發(fā)送釘釘通知,有的是發(fā)給個(gè)人,有的要發(fā)到群里,這時(shí)項(xiàng)目就需要接入釘釘,實(shí)現(xiàn)發(fā)消息的功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-02-02