maven

Maven学习

1. Ant

项目构建工具

在项目运行编辑打包等过程都需要依赖于ant构建工具

2. 分布式

把一个完整的项目拆分成多个项目,把拆分的项目分别部署到对应的服务器中的过程叫做分布式项目部署

将项目包换成一个单独项目

3. Maven

3.1. 网址

https://mvnrepository.com/tags/maven

基于Ant的构建工具,功能更加强大

  • 本地仓库:计算机中的一个文件夹

  • 中央仓库:http://repo1.maven.org/maven2 网上地址,下载后放到本地仓库中

  • 保证jdk和开发环境一致

  • 坐标

    每一个jar都有一个唯一坐标

    • GroupID 公司名,公司网址倒写

    • ArtifactID 项目名

    • Version 版本

    • Packaging 项目类型,打包类型

      • jar java项目

      • war web项目

      • pom (project of model)项目对象模型 把项目看作对象

        逻辑父项目。只要项目有子项目必须是pom类型

3.2. 配置Maven

http://maven.apache.org/download.cgi

解压文件

eclipse中装配maven

打开偏好设置,添加下载的maven 点击Apply

配置settings.xml

在解压的maven文件夹下新建repository文件夹,用于承接中央仓库中下载的内容

点击open File

配置settings.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!-- 本地仓库 -->
<localRepository>/Users/Learning/Resource/workspace/myEclipse/apache-maven-3.6.2/repository</localRepository>

<!-- 镜像 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

<!-- jdk -->
<profile>
<id>jdk-1.8</id>

<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>

<repositories>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</repositories>
</profile>

3.3. 新建Maven项目

创造一个简单的maven项目

最终项目列表

src/main/java 真实目录的快捷目录,java代码

src/main/resources 快捷目录 存放配置文件,最终编译后放到classes文件夹中

src/test/java 测试java代码

src/test/resources 测试配置文件

pom.xml maven配置文件(最重要)

新建test类

1
2
3
4
5
public class test {
public void out() {
System.out.println("Hello");
}
}

再新建一个maven项目Test2, 打开pom.xml 关联Test项目

1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>com.runaccpeted</groupId>
<artifactId>Test</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

在Test2项目下自动关联Test

调用, 还可以查看源码

1
2
3
4
5
6
public class Main {
public static void main(String[] args) {
test t = new test();
t.out();
}
}

3.4. maven项目关系

3.4.1. 依赖

项目中自动下载另一个项目依赖的其他项目

3.4.2. 继承

父项目必须为pom类型,父项目中看不到子项目,只有逻辑上的父子关系

子项目为jar或war ,子项目中多了parent标签,出现警告子项目的groupId和version可以和父项目相同

1
2
3
4
5
<parent>
<groupId>com.runaccpeted</groupId>
<artifactId>Parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>

3.4.3. 聚合

前提是继承关系,父项目包含子项目

子项目类型必须是Maven Module,但仍然是一个独立的项目

父项目中多了modules标签

1
2
3
<modules>
<module>children</module>
</modules>

3.5. dependencyManagement

写在父项目中

子项目只需要有坐标的groupId和artifactid,version继承自父项目

在父项目中声明properties把所有版本号进行统一管理

父项目

1
2
3
4
5
6
7
8
9
10
11
12
<properties>
<spring-version>4.3.13.RELEASE</spring-version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring-version}</version>
</dependency>
</dependencies>
</dependencyManagement>

子项目

1
2
3
4
5
6
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
</dependencies>

4. 创建war项目

maven项目类型为war

在main/webapp 下新建META-INF和WEB-INF,web.xml,index.jsp

在pom.xml中添加三个jar

< scope>provided</ scope> 有效范围 provided表示编译期生效,不会打包发布到tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>

tomcat插件

1
2
3
4
5
6
7
8
9
10
11
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 端口号 -->
<port>8080</port>
<!-- 映射名 /表示http:localhost:8080/-->
<path>/</path>
</configuration>
</plugin>

启动项目

Run As –> Maven build

Goals处填写 clean tomcat7:run

tomcat部署位置

Web/src/main/webapp/

5. 编译java文件夹的xml文件

maven默认只把src/main/resources里面的非java文件进行编译到classes中

希望src/main/java中的xml页编译到classes需要添加

1
2
3
4
5
6
7
8
9
10
11
12
13
 <build>
<resources>
<resource>
<directory>src/main/java</directory>
<include>**/*.xml</include>
</resource>
<resource>
<directory>src/main/resources</directory>
<include>**/*.xml</include>
<include>**/*.properties</include>
</resource>
</resources>
</build>

6. 热部署–发布到树莓派tomcat

部署属性

1
2
3
<username>tomcat</username>
<password>tomcat</password>
<url>http://192.168.0.103:8080/manager/text</url>

整个tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<!-- 端口号 -->
<port>8080</port>
<!-- 映射名 -->
<path>/web</path>
<username>tomcat</username>
<password>tomcat</password>
<url>http://192.168.0.103:8080/manager/text</url>
</configuration>
</plugin>

部署

首次:tomcat7:deploy

以后:tomcat7:redeploy

查看部署

访问网址http://192.168.0.103:8080/web/demo

本文结束  感谢您的阅读
  • 本文作者: Wang Ting
  • 本文链接: /zh-CN/2019/09/18/maven/
  • 发布时间: 2019-09-18 07:27
  • 更新时间: 2021-10-29 14:22
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!