美文网首页JAVAEE
JAVAEE管理——Maven

JAVAEE管理——Maven

作者: So_ProbuING | 来源:发表于2018-07-10 11:36 被阅读5次

Maven简介

是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的

Maven好处

  • 普通的传统项目


    图片.png
  • Maven项目


    图片.png

依赖管理

图片.png

Maven的好处

依赖管理:就是对项目依赖的jar包的统一管理 可以节省空间
一键构建
可以跨平台
应用于大型项目 可以提高开发效率

Maven构建

  • 下载安装


    图片.png
  • maven的核心文件 maven/apache-maven-3.5.4/conf/settings.xml


    核心文件

Maven的三种仓库

本地仓库 自己维护

配置本地仓库需要修改setting.xml文件

 <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository 默认本地仓库
  <localRepository>/path/to/local/repo</localRepository>
  -->
> default 默认的本地仓库

远程仓库 公司维护

中央仓库 maven团队维护

Maven的目录结构

maven项目目录结构
Maven的目录结构

Maven的常用命令

clean清理

clean是maven工程的清理命令,执行clean会删除target目录的内容


clean命令

Compile

Compile是maven工程的编译命令,作用是将src/main/java下的文件编译为class文件输出到target目录下


图片.png

Test

test是maven工程的测试命令,会执行src/test/java下的单元测试类

图片.png

package

package是maven工程的打包命令,对于java工程执行package打成jar包,对于web工程打成war包


图片.png

install 将项目发布到本地仓库

install是maven工程的安装命令,执行install将maven打成jar包或war包发布到本地仓库

对于web工程 发布到本地仓库并没有任何作用

install

Tomcat:run 一键启动

site 生成对应的工程说明

Maven的生命周期

compile test package install
执行install的时候 compile test package都会执行

图片.png

clean的生命周期

maven对项目构建过程分为三套相互独立的生命周期。
CleanLifecycle 在进行真正的构建之前进行一些清理工作
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等
SiteLifecycle 生成项目报告,站点 发布站点

各阶段生命周期

不同的生命周期命令可以同时执行

mvn clean package

构建Maven项目 IDE:Intelij idea

创建项目

创建项目

选择maven

选择maven

填写项目信息

图片.png

添加tomcat插件

  • 增加war打包


    图片.png
  • 添加web目录 注意 这个目录在main/webapp/


    创建web目录
  • 创建web资源目录


    web资源

在pom.xml添加tomcat插件

pom.xml配置

项目启动配置

  • 编辑配置


    编辑配置
  • 添加+ 选择maven


    图片.png
  • 配置maven命令


    配置maven命令
  • 配置maven仓库


    配置maven仓库
  • 在webapp下添加index.html


    图片.png
  • 启动项目


    图片.png
图片.png

参考大神文章:https://my.oschina.net/u/2935623/blog/1803198

maven坐标定义

每个maven工程都需要定义本工程的坐标,坐标是maven对jar包身份定义:

<!--项目名称,定义为组织名+项目名 类似包名-->
 <groupId>cn.probuing.maven</groupId>
<!--模块名称-->
    <artifactId>maven_tx</artifactId>
<!--当前项目版本号-->
    <version>1.0-SNAPSHOT</version>
<!--打包类型-->
    <packaging>war</packaging>
    * jar:执行package会打成jar包
    * war:执行package会打成war包
    * pom:用于maven工程的集成,通常父工程设置为pom

maven与Struts2整合

使用struts2与maven传递一个客户id 跳转页面

创建项目

创建项目

设置packaging 为war

<?xml version="1.0" encoding="UTF-8"?>
<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>cn.probuing.crm</groupId>
    <artifactId>mavenProj</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
</project>

添加web目录

图片.png

添加tomcat插件

   <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/mavssh</path>
                </configuration>
            </plugin>
        </plugins>

添加依赖 管理jar包

  <!--依赖管理-->
    <dependencies>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>2.3.24</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
    </dependencies>

为避免包冲突,添加servlet-api.jar和jsp-api.jar 注意选择scope为provided

配置struts2

  • struts.xml src/main/resources/
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 配置常量 -->
    <!-- 字符集 -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <!-- 开发模式 -->
    <constant name="struts.devMode" value="true"></constant>
    <!-- 主题 -->
    <constant name="struts.ui.theme" value="simple"></constant>
    <!-- 扩展名 -->
    <constant name="struts.action.extension" value="action,,"></constant>

    <!-- 通用package -->
    <package name="customer" namespace="/" extends="struts-default">

        <action name="customerAction" class="cn.probuing.action.CustomerAction">
            <result name="success">/info.jsp</result>
        </action>

    </package>
</struts>
  • web.xml 核心过滤器
 <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

编写action

public class CutomerAction extends ActionSupport {
    private Long custId;
    public Long getCustId() {
        return custId;
    }
    public void setCustId(Long custId) {
        this.custId = custId;
    }
    public String findById(){
        return SUCCESS;
    }
}
  • jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
Hello Every body it's from maven
</body>
</html>

依赖范围

Compile

编译时需要,测试时需要,运行时需要,打包时需要

Provided

编译时需要,测试时需要,运行时不需要,打包时不需要

Runtime

编译时不需要,测试时需要,运行时需要,打包时需要

Test

编译时不需要,测试时需要,运行时不需要,打包也不需要

整合框架时依赖冲突的解决

在我们整合框架的时候,在集成了多个框架的时候可能会出现依赖冲突的情况,我们解决依赖冲突主要有以下几个方式

第一声明优先原则

优先声明的会先进行配置,如下配置中Maven会集成spring-beans-4.2.4的依赖库

<dependencies>
  <!--   spring-beans-4.2.4 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.2.4.RELEASE</version>
    </dependency>  
<!--   spring-beans-3.0.5 -->
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.24</version>
    </dependency>

路径优先原则

  • 自己指定jar包
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.2.4.RELEASE</version>
    </dependency>

  • 添加排除
    使用<exclusion>标签可以指定排除冲突的库
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-spring-plugin</artifactId>
        <version>2.3.24</version>
        <exclusions>
          <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
          </exclusion>
        </exclusions>
    </dependency>

版本锁定原则

<!--定义变量配置-->
<properties>
        <spring.version>4.2.4.RELEASE</spring.version>
        <hibernate.version>5.0.7.Final</hibernate.version>
        <struts.version>2.3.24</struts.version>
    </properties>

    <!-- 锁定版本,struts2-2.3.24、spring4.2.4、hibernate5.0.7 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>${spring.version}</version>
            </dependency>
</dependencies>
</dependencyManagement>

分模块开发

依赖传递

依赖传递

依赖关系

  • 父工程
  • 模块工程
  • 依赖模块工程的模块工程

在这里需要注意的是 对于有些工程 定义的 依赖的生命周期为scope为test的依赖,需要手动添加到依赖中

相关文章

  • Maven

    Maven是项目管理的Java工具,JavaEE中使用Maven可以方便地管理团队合作项目,可使用Maven管理类...

  • JAVAEE管理——Maven

    Maven简介 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 Maven好处 ...

  • JAVAEE管理——Maven

    Maven简介 是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的 Maven好处 ...

  • 87、【JavaEE】【Maven】Maven

    1、概述 Maven 官网:https://maven.apache.org Maven 是一个跨平台的项目管理工...

  • 第二轮代课的目标

    这是第二乱完整的代课。这次的目标是:完善JAVAEE的课程。 1. 增加maven的使用。 2. 夯实JAVAEE...

  • IDEA 使用JPA快速将表转换为实体类

    1.引入 javaee maven 依赖,scope填写provided 否则会包冲突 2.在项目配置 modul...

  • 18.maven

    1.什么是maven? 自动化构建项目工具 javaEE 经历了一些了变化 Make -> Ant -> Mav...

  • maven

    Maven snapshot maven的依赖管理是基于版本管理的,在maven2之后,把版本管理细化snapsh...

  • Maven入坑(一) Hello world

    Maven 专题 Maven 是什么 Maven 是 Java平台的构建管理,依赖管理和项目信息管理的工具. 相当...

  • Eclipse下的Maven环境配置

    某天我突然心血来潮想试试利用maven来配置项目。因为我厌烦了Eclipse for JavaEE 中每次改动ja...

网友评论

    本文标题:JAVAEE管理——Maven

    本文链接:https://www.haomeiwen.com/subject/vegeuftx.html