参考:https://www.bilibili.com/video/BV1Fz4y167p5
文章目录
IDEA编辑器中 maven 项目的创建
创建 Java 项目
新建 Java 项目
- 选择
File
-->New
-->Project
- 选择
Maven
,设置 jdk 版本(Project SDK),勾选Create from archetype
,选择 maven 项目的模板。可以选择普通 Maven 项目模板(org.apache.maven.archetypes:maven-archetype-quickstart
)。点击Next
- 设置项目的项目名、保存位置、 GroupId 和 ArtifactId,点击
Next
- 检查 Maven 环境,如果此前已经配置好 Maven 环境,这里仅仅是检查;如果之前没有配置好,则需要在此处重新对 maven 进行配置。点击
Finish
- 等待项目创建,下载资源。
- 若 IDEA 右下角弹窗,询问
Maven projects need to be imported(Import Changes / Enable Auto-Import)
,则选择Enable Auto-Import
(自动导入,这样“依赖包”才会自动下载)
- 若 IDEA 右下角弹窗,询问
至此,maven 项目创建完毕。
注意:
- IDEA 右侧会看到 Maven 标签,点开,在 Plugins 里,就是 Maven 的可视化命令,双击相应的命令,就会执行该命令。
- Maven 项目创建后,目录结构树中可能只有
main\java
、test\java
,并没有main\resources
、test\resources
,可以右击新建。比如新建了main\resources
,此时,虽然它被命名为resources
,但 Maven 并不会识别,需要对该文件夹右击,选择Mark Directory as
-->Resources Root
。会发现文件夹的图标发生了变化,此时,Maven 才会把这个文件夹识别为资源目录。同样,创建test\resources
后,也需要右击选择Mark Directory as
-->Test Resources Root
。- 以上目录创建与设置,也可以通过
File
-->Project Structure
-->Project Settings
-->Modules
-->Sources
,然后展开文件目录树,在此处进行目录的创建于标注(Mark as
)。
- 以上目录创建与设置,也可以通过
编译 Java 项目
- 点击右上角的
Add Configurations
,打开Run/Debug configurations
窗口 - 点击
+
号,选择Maven
,在Name
处填写动作名(默认是当前项目名,但是最好改成动作名,如编译compile
)。在Parameters
中的Command line:
中填入要执行的实际 maven 命令
(但前面不用加上mvn
),如:compile
(而非mvn compile
)。注意,这里如果写错了命令(如拼写错误typo,要回来修改),之后RUN
的时候就会报错。- 可以点击多次
+
号,生成多个命令,方便之后编译(compile
)、打包(package
)等
- 可以点击多次
- 确认一下
Working directory:
是否无误,点击Apply
–>OK
- 此时会回到主界面,原先右上角的
Add Configurations
就发生了变化,变为了第2步Name
中设置的动作名,且右侧出现了两个按钮,一个是RUN
(普通模式),另一个是Debug
(调试模式) - 点击
RUN
就等于运行了mvn compile
命令,可以看到在左侧文件目录树处生成了一个target
目录。- 如果在执行一个打包命令(
package
)就可以看到target
目录下又多出了一堆的目录,其中最主要是下方新生成了一个jar
包。
- 如果在执行一个打包命令(
创建 Web 项目
新建 Web 项目
创建 Web 项目会比创建普通的 Java 项目要难一点点,但二者步骤基本一致,区别在于选择 Maven 模板时,Web 项目选择的是 webapp
而非之前的 quickstart
- 选择
File
-->New
-->Project
- 选择
Maven
,设置 jdk 版本(Project SDK),勾选Create from archetype
,选择 maven 项目的模板。可以选择普通 Maven 项目模板(org.apache.maven.archetypes:maven-archetype-webapp
)。点击Next
其余步骤与创建 普通 Java 项目是一样的。
Web 项目创建完毕后,生成的目录树与普通 Java 项目有所区别。
main\java
变为了main\webapp
,用来放 html、jsp 等页面。main\webapp
下还有两个文件/目录WEB-INF
index.jsp
启动 Web 项目
Web 项目是需要修改一些配置的,以后常用的也是 Web 项目。
1. 修改 jdk 版本
默认是 1.7 版本,改为 1.8 版本。(当然如果本身你用的 jdk 版本是 1.7 的话就不用改了,现在因为用的 jdk 是 1.8,所以改为 1.8)
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<!-- jdk 版本改为 1.8 -->
<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>
2. 设置单元测试的版本
如果想用单元测试,现在已经需要使用 4.12 版本了,如果默认是 3.x 版本,则需要修改一下。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<!-- junit 版本改为 4.12 -->
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
3. 删除 pluginManagement
标签
这个标签里的内容是和插件相关的,我们用不上。(可能是pom.xml
中的 33~65 行)
<!-- 将这个标签及标签中的内容全部删除 -->
<pluginManagement>
...
</pluginManagement>
4. 添加 web 部署的插件
Maven 的 Web 项目是需要服务器的支持,所以还需要将服务器集成进来。
在 <build>
标签中添加 <plugins>
标签。再将所需要的插件放进去即可。
- Jetty 插件
<!-- 设置在plugins标签中 -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.25</version>
<configuration>
<!-- 热部署,每10秒扫描⼀次 -->
<scanIntervalSeconds>10</scanIntervalSeconds>
<!-- 可指定当前项⽬的站点名 -->
<contextPath>/test</contextPath>
<connectors>
<connector
implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>9090</port> <!-- 设置启动的端⼝号 -->
</connector>
</connectors>
</configuration>
</plugin>
- Tomcat 插件
<!-- 设置在plugins标签中 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>8081</port> <!-- 启动端⼝ 默认:8080 -->
<path>/test</path> <!-- 项⽬的站点名,即对外访问路径 -->
<uriEncoding>UTF-8</uriEncoding> <!-- 字符集编码 默认:ISO-8859-1 -->
<server>tomcat7</server> <!-- 服务器名称 -->
</configuration>
</plugin>
Maven 插件
maven 有哪些可以使用的插件,并且这些插件如何使用(如何加入
pom.xml
并配置),可以进入 maven 的官网查看。
- https://maven.apache.org/
从官网左侧栏找到
plugins
进入,就可以看到哪些插件可用,可以看到上面的jetty
与tomcat
,点击进去,可以看到如何使用。如果已经知道有这样的插件,比如
tomcat
,可以直接进入插件的官网,比如tomcat
:https://tomcat.apache.org/ ,进入后,再左侧看到Maven Plugin
,点击进去即可获得相关使用资料信息。
修改了 pom.xml
会自动下载依赖,但有时候会下载得很慢,甚至下载不成功。pom.xml
如果显示是红色的,可能就是下载失败了的。
启动 web 项目
-
点击右上角
Add Configurations
,打开Run/Debug Configurations
窗口。 -
点击
+
号,选择Maven
-
Jetty 插件配置:
Name
处填写jetty
(名称自定义)。Command line:
处填写jetty:run
(执行的命令;表示通过jetty
的方式启动项目),点击Apply
-->OK
- 也可以输入命令指定端口启动:
jetty:run -Djetty.port=9090
(需要将插件配置中的port
标签去掉,因为这两个地方只需要有一个地方写端口)。
- 也可以输入命令指定端口启动:
-
此时会回到主界面,原先右上角的
Add Configurations
就发生了变化,变为了第 3 步Name
中设置的动作名,且右侧出现了两个按钮,一个是RUN
(普通模式),另一个是Debug
(调试模式) -
点击
RUN
,若显示如下信息则运行成功[INFO] Starting jetty 6.1.25 ... [INFO] jetty-6.1.25 [INFO] No Transaction manager found - if your webapp requires one, please configure one. [INFO] Started SelectChannelConnector@0.0.0.0:9090 [INFO] Started Jetty Server [INFO] Starting scanner at interval of 10 seconds.
-
在浏览器中输入:
localhost:9090/test/index.jsp
或127.0.0.1:9090/test/index.jsp
即可访问。(index.jsp
文件中是输出了一个 “Hello world!”)<html> <body> <h2>Hello World!</h2> </body> </html>
/test
是在pom.xml
中 jetty 插件中的<contextPath>
中配置的。9090
是在pom.xml
中 jetty 插件中的<port>
中配置的。-
运行 jetty 后,修改
pom.xml
中 jetty 插件的配置,并不会马上生效。需要重新启动运行(RUN
)才能生效。
如果是用tomcat,则上面第3步中 Command line:
中填写 tomcat7:run
即可。
[INFO] --- tomcat7-maven-plugin:2.1:run (default-cli) @ IDEA-maven-webapptest01 ---
[INFO] Running war on http://localhost:8081/test
[INFO] Creating Tomcat server configuration at F:\coding\IDEA-maven-webapptest01\target\tomcat
[INFO] create webapp with contextPath: /test
二月 12, 2022 10:39:09 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-bio-8081"]
二月 12, 2022 10:39:09 下午 org.apache.catalina.core.StandardService startInternal
信息: Starting service Tomcat
二月 12, 2022 10:39:09 下午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/7.0.37
二月 12, 2022 10:39:09 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8081"]
浏览器中输入以下网址进行访问
localhost:8081/test/index.jsp
或
http://127.0.0.1:8081/test/index.jsp
jetty 和 tomcat 可以同时启动,只要端口不一样即可。