Java高级技术day74:Maven实战

一、Maven私服搭建

1.Maven常用命令:

(1)install:

本地安装, 包含编译,打包,安装到本地仓库 编译 - javac 打包 - jar, 将 java 代码打包为 jar 文件 安装到本地仓库 - 将打包的 jar 文件,保存到本地仓库目录中。

(2)clean:

清除已编译信息。 删除工程中的 target 目录。

(3)compile :

只编译,类似于javac 命令 。

(4)deploy:

部署。 常见于结合私服使用的命令。
相当于是 install+上传 jar 到私服。
包含编译,打包,安装到本地仓库,上传到私服仓库。

2.Maven私服:

  • 什么是私服?

私服是一种特殊的远程仓库,它是架设在局域网的仓库服务,私服代理广域网上的远程 仓库,供局域网使用。 在企业开发中,私服的建设是有必要的。

  • 私服的好处:

(1)节省资金、外网带宽:
利用私服代理外部仓库之后,对外的重复构件下载便得以简化,降低外网带宽压力。
(2)加速Maven构建:
不停地连接请求外部仓库是相当耗时的,但是 maven 的一些内部机制(如快照更新检 查)要求 Maven 在执行构建的时候不停地检查远程仓库数据。因此,当项目配置了很多外 部远程仓库的时候,构建速度会降低。使用私服解决这问题,因为 Maven 只需要检查局域 网内私服的数据时,构建速度便有明显提高。
(3) 部署第三方构件 :
当某个构件无法从任何一个远程仓库获取怎么办?比如 Oracle 的 JDBC 驱动由于版权 原因不能发布到公共仓库中。建立私服后,便可以将这些构件部署到这个内部仓库中,供内 部 Maven 项目使用。
(4)提高稳定性,增强控制:
对于远程仓库来说,当外网不可用时,Maven 构建有可能因为依赖没有下载而不可行, 搭建并应用私服后,即使没有外网,如果该构件之前被其它人下载过就会存在私服上,此时 再次依赖该构件就可以不用连接外网直接就可以从私服上下载到。同时私服软件(nexus)还 提供了额外的管理功能。
(5) 降低中央仓库的负荷 :
中央仓库是有限的。如果所有的 Maven 工程开发过程中,都通过中央仓库实现构件的 依赖和管理,那么中央仓库的负荷过高,也会严重影响工程构建的效率。如果使用私服,可 以分散中央仓库的负荷,只有在私服中没有需要依赖的构件时才会去连接中央仓库。

3.Maven私服搭建:

  • 搭建环境:

环境:CentOS6.5、JDK7、Sonatype Nexus、Maven(Eclipse 或 MyEclipse);

  • 搭建步骤:
    (1)安装JDK:

JDK下载地址:官方网站;
将jdk解压到指定目录:
tar -zxvf jdk-7u80-linux-x64.tar.gz -C /usr/local ;
配置环境变量(配置完成后重启Linux永久生效):

export JAVA_HOME=/usr/local/java export 
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$JAVA_HOME/bin:$PATH 

(2)下载Nexus资源包:

下载地址:官方网址;
将Nexus解压到指定目录:
tar -zxvf nexus-2.11.2-03-bundle.tar.gz -C /usr/local/nexus ;
Nexus 压缩包中包含两个子目录:
nexus-2.11.2-03 和 sonatype-work nexus-2.11.2-03 是具体的私服应用内容,sonatype-work 是 Nexus 私服下载的构件存放工 作目录。
(3)检查私服端口和工作目录:
在 nexus-2.11.2-03 目录中有子目录 conf,其中保存私服应用的配置信息。查看 nexus.properties 文件,确定私服访问端口和工作目录。

application-port=8081   # 私服访问端口 
application-host=0.0.0.0 
nexus-webapp=${bundleBasedir}/nexus   # Nexus 私服 WEB 应用所在位置 
nexus-webapp-context-path=/nexus   # Nexus 私服 WEB 应用 contextPath
# Nexus section Nexus 私服配置信息 
nexus-work=${bundleBasedir}/../sonatype-work/nexus  
# 私服工作目录,即构件保存目录 
runtime=${bundleBasedir}/nexus/WEB-INF  # 私服 WEB 应用运行目录  

(4)修改Nexus运行用户:

Nexus 私服在启动后,私服应用需要访问 Linux 的文件系统,所以需要有足够的权限。 Nexus的启动脚本文件中,可以指定私服应用的访问用户,此信息在nexus-2.11.2-03/bin/nexus 脚本文件中定义。

# NOTE - This will set the user which is used to run the Wrapper as well as
#  the JVM and is not useful in situations where a privileged resource or 
#  port needs to be allocated prior to the user being changed. 
#RUN_AS_USER=  #原内容 
RUN_AS_USER=root  #修改后的内容,代表 Nexus 私服使用 root 用户权限。 

(5)修改防火墙,开发Nexus私服端口访问:

修改防火墙配置文件,开放 Nexus 私服的访问端口 8081。
增加:“-A INPUT -m state --state NEW -m tcp -p tcp --dport 8081 -j ACCEPT ”;
重启防火墙:“service iptables restart ”;
或者直接关闭防火墙:

关闭防火墙

(6)启动并测试访问:

启动私服:“/usr/local/nexus/nexus-2.11.2-03/bin/nexus start ”;
检查私服运行状态:"/usr/local/nexus/nexus-2.11.2-03/bin/nexus status ";
也可以使用浏览器访问私服WEB应用,访问地址为:“http://ip:8081/nexus (ip 为 Nexus 所在系统的访问 IP)”

启动私服

浏览器效果

(7)登录:

Nexus 默认提供管理用户,用户名为 admin,密码为 admin123。

登录界面

成功界面
  • 仓库管理:
    (1)检查仓库:


    image.png

    (2)仓库的类型:


    仓库类型

(3)仓库类型的介绍:

group:仓库组,Nexus 通过仓库组来统一管理多个仓库,这样访问仓库组就相当于访问仓库组 管理的多个仓库。
hosted:宿主仓库,主要用于发布内部项目构件或第三方的项目构件(如购买商业的构件)以及 无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)。
releases:发布内部的 releases 模块的仓库,所有非快照版本工程都发布到此仓库中。
snapshots:发布内部的快照模块的仓库,所有工程版本以 SNAPSHOT 结尾的都发布到此仓库中。
3rd party
第三方依赖的仓库,这个数据通常是由内部人员自行下载之后发布上去。
proxy:代理仓库,代理公共的远程仓库。
virtual:虚拟仓库,用于适配 Maven 1。

(4)代理仓库配置:

设置 proxy 代理仓库(Apache Snapshots/Central/Codehaus Snapshots)准许远程下载。

更改设置
  • 私服的使用:
    (1)配置setting.xml文件(添加下面信息):

            sxt
            
                false
                1.8
            
            
                
                
                    
                    nexus
                    
                    http://192.168.226.128:8081/nexus/content/groups/public/
                    
                    
                        true
                    
                    
                    
                        true
                    
                
            
            
                
                
                    nexus
                    http://192.168.226.128:8081/nexus/content/groups/public/
                    
                        true
                    
                    
                        true
                    
                
            
        

(2)pom.xml文件配置:

    
        
            nexus-releases
            Nexus Release Repository
            http://192.168.226.128:8081/nexus/content/repositories/releases/
        
        
            nexus-snapshots
            Nexus Snapshot Repository
            http://192.168.226.128:8081/nexus/content/repositories/snapshots/
        
    
    
        
            
                org.apache.maven.plugins
                maven-source-plugin
                2.1.2
                
                    
                        attach-sources
                        
                            jar
                        
                    
                
            
        
     
  • 发布本地工程到私服:

在 Maven 工程的 maven build 中,输入命令 deploy,即可实现发布工程信息到私服。 如果同版本工程可能多次发布,需要修改 Nexus 配置。

image.png
  • 发布第三方插件到私服:


    image.png

    image.png

二、Maven实战:

1.需求分析:

基于 SSM 框架的 CRUD 案例;

  • 使用的技术:

框架:SpringMVC+Spring+Mybatis
数据库:MySQL
项目构建工具:Maven
Maven先打包Parent在打包聚合项目;再启动聚合项目。

启动Tomcat

2.项目架构设计:

  • 传统项目设计方式:


    传统方式
  • Maven 项目设计方式:


    Maven

3.创建工程:

3.1创建Parent工程:
Parent
  • 修改POM文件:

    4.0.0
    com.zlw
    11parent
    0.0.1-SNAPSHOT
    pom

    
        4.12
        4.1.3.RELEASE
        3.2.8
        1.2.2
        5.1.32
        1.6.4
        1.0.9
        1.2
        2.5
        2.0
        2.2
    
    
    
    
        
            
            
                junit
                junit
                ${junit.version}
                test
            
            
            
                org.slf4j
                slf4j-log4j12
                ${slf4j.version}
            
            
            
                org.mybatis
                mybatis
                ${mybatis.version}
            
            
            
                org.mybatis
                mybatis-spring
                ${mybatis.spring.version}
            
            
            
            
                mysql
                mysql-connector-java
                ${mysql.version}
            
            
            
                com.alibaba
                druid
                ${druid.version}
            
            
            
            
                org.springframework
                spring-context
                ${spring.version}
            
            
            
                org.springframework
                spring-beans
                ${spring.version}
            
            
                org.springframework
                spring-webmvc
                ${spring.version}
            
            
            
                org.springframework
                spring-jdbc
                ${spring.version}
            
            
            
                org.springframework
                spring-aspects
                ${spring.version}
            
            
                commons-fileupload
                commons-fileupload
                1.3
            
            
            
                jstl
                jstl
                ${jstl.version}
            
            
                javax.servlet
                servlet-api
                ${servlet-api.version}
                provided
            
            
                javax.servlet
                jsp-api
                ${jsp-api.version}
                provided
            
        
    

    
    
        
        
            
                
                
                    org.apache.tomcat.maven
                    tomcat7-maven-plugin
                    ${tomcat.version}
                
            
        

        
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.2
                
                    1.8
                    1.8
                    UTF-8
                
            
        
    

3.2创建聚合工程Manager:
聚合
3.3在聚合工程的基础上创建:
  • 创建manager-pojo:


    Module

    详细信息
  • 创建manager-mapper:


    mapper
  • 修改 manager-mapper 的 pom 文件:

    4.0.0
    
        com.zlw
        12manager
        0.0.1-SNAPSHOT
    
    manager-mapper
    
    
    
        
            com.zlw
            manager-pojo
            0.0.1-SNAPSHOT
        
        
        
        
            org.mybatis
            mybatis
        

        
            org.mybatis
            mybatis-spring
        
            
                commons-fileupload
                commons-fileupload
            

        
        
            mysql
            mysql-connector-java
        
        
        
            com.alibaba
            druid
        
    
    
    
        
            
                src/main/java
                
                    **/*.xml
                
             
        
    


  • 创建 manager-service:


    service
  • 修改 manager-service 的 pom 文件:

  4.0.0
  
    com.zlw
    12manager
    0.0.1-SNAPSHOT
  
  manager-service
    
    
    
        
             com.zlw
            manager-mapper
            0.0.1-SNAPSHOT
        
        
            
                org.springframework
                spring-context
            
            
            
                org.springframework
                spring-beans
            
            
                org.springframework
                spring-webmvc
            
            
            
                org.springframework
                spring-jdbc
            
            
            
                org.springframework
                spring-aspects
            
            
                commons-fileupload
                commons-fileupload
            
    

  • 创建 manager-controller :


    war

    补全项目
  • 修改 manager-controller 的 pom 文件:

  4.0.0
  
    com.zlw
    12manager
    0.0.1-SNAPSHOT
  
  manager-controller
  war
    
    
        
            com.zlw
            manager-service
            0.0.1-SNAPSHOT
        
        
            
                jstl
                jstl
            
            
                javax.servlet
                servlet-api
                provided
            
            
                javax.servlet
                jsp-api
                provided
            
    
    
        
    
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                    8080
                    /
                
             
  
        
    

4.框架整合:

image.png
4.1db.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm
jdbc.username=root
jdbc.password=root
4.2 Mybatis 配置文件:

 
  
    
  
4.3applicationContext-mybatis.xml :
        
        
        
        
        
             
            
            
             
            
            
        
        
        
            
            
            
            
                classpath:mybatis/SqlMapperClient.xml
            
        
        
        
            
        
4.4 applicationContext-service.xml :


        
        
        

4.5 applicationContext-trans.xml :
    
    
        
    
    
     
        
            
            
            
            
            
            
        
    

    
    
        
    
4.6springmvc.xml :
            
            
            
            
            
            
            
                
                
            
            
            
            
            
            
            
            
                  
                  
                  
            
4.7web.xml:

 
    
    
    
        contextConfigLocation
        classpath:spring/applicationContext-*.xml
    
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
        
            contextConfigLocation
            classpath:spring/springmvc.xml
        
        
        1
    
    
        springmvc
        /
    
    
    
        encoding
        org.springframework.web.filter.CharacterEncodingFilter
        
        
            encoding
            utf-8
        
    
    
        encoding
        /*
    
    

4.8配置 tomcat 与资源拷贝插件:
        
    
            
                org.apache.tomcat.maven
                tomcat7-maven-plugin
                
                    8080
                    /
                
             
  
        
4.9 启动 tomcat 测试框架整合:
image.png

5.添加用户:

5.1Controller:
@Controller
public class PageController {
    @RequestMapping("/{page}")
    public String showPage(@PathVariable String page) {
        return page;
    }
@Controller
@RequestMapping("/user")
public class UserController {
    
    @Autowired
    private UserService userService;
    @RequestMapping("/addUser")
    public String addUser(User user) {
        userService.addUser(user);
        return "redirect:/user/findUser";
    }
5.2JSP:

    

添加用户

查询用户


    
用户名:
用户年龄:

    

添加成功!

5.3 Manager-service:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;
    @Override
    public void addUser(User user) {
        userMapper.insertUser(user);
    }
}

5.4 Manager-mapper:

public interface UserMapper {
    /**
     * 添加操作
     * @param user
     */
    void insertUser(User user);
}



    
        insert into users(username,userage) values(#{username},#{userage})
    
   
5.5 Manager-pojo :
    private int userid;
    private String username;
    private int userage;

6.查询用户:

6.1 Manager-controller :
    @RequestMapping("findUser")
    public String findUser(Model model) {
        List list = userService.findAllUser();
        model.addAttribute("list",list);
        return "showUser";
    }
6.2JSP:

    
        
ID 用户名 用户年龄 操作
${user.userid } ${user.username } ${user.userage } 删除    修改
返回
6.3 Manager-service:
    @Override
    public List findAllUser() {
        return userMapper.findAllUser();
    }
6.4 Manager-mapper:
    /**
     * 查询用户
     * @return
     */
    List findAllUser();
    
    

7.修改和删除:

7.1Controller:
    @RequestMapping("delete")
    public String deleteUser(int userid) {
        userService.deleteUser(userid);
        return "redirect:/user/findUser";
    }
    
    @RequestMapping("/update")
    public String updateUser(User user) {
        userService.updateUser(user);
        return"redirect:/user/findUser";
    }
    
    @RequestMapping("findById")
    public String findById(int userid,HttpServletRequest request) {
        User user = userService.findById(userid);
        request.setAttribute("user", user);
        return "update";
  • JSP:

    
ID:
用户名:
用户年龄:
7.2Service:
    @Override
    public void updateUser(User user) {
        userMapper.updateUser(user);
    }
    @Override
    public void deleteUser(int userid) {
        userMapper.deleteUser(userid);
    }
    @Override
    public User findById(int userid) {
        return userMapper.findById(userid);
    }
7.3mapper:
    /**
     * 删除用户
     * @param userid
     */
    void deleteUser(int userid);
    
    /**
     * 修改用户
     * @param user
     */
    void updateUser(User user);
    
    User findById(int userid);
    
        delete from users where userid=#{0}
    
    
        update users set username=#{username},userage=#{userage} where userid=#{userid}
    
    
  • 实现效果:


    index

    添加
查询
修改

你可能感兴趣的:(Java高级技术day74:Maven实战)