【Maven】入门笔记03_利用maven整合SSM框架,Maven模块化开发、使用nexus配置Maven远程仓库

本文介绍了如何利用Maven整合SSM框架,解决依赖冲突,展示了Maven模块化开发的项目结构和操作步骤,并详细讲解了如何配置和使用Nexus作为Maven远程仓库,包括上传、下载jar包及权限管理。
摘要由CSDN通过智能技术生成

一、阿里云Maven官方网站,提供依赖查询:https://maven.aliyun.com/mvn/search

二、整合SSM框架的Maven项目的对应pom.xml文件

<modelVersion>4.0.0</modelVersion>
  <groupId>com.dunka</groupId>
  <artifactId>Maven_SSM</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
   <properties>
  	<!-- lib version -->
  	<spring.version>5.0.8.RELEASE</spring.version>
  	<mybais.version>3.4.6</mybais.version>
  	<mybatis-spring.version>1.3.2</mybatis-spring.version>
  	<mysql-connector.version>5.1.46</mysql-connector.version>
  	<ojdbc7.version>12.1.0.2.0</ojdbc7.version>
  	<druid.version>1.0.16</druid.version>
  	<aopalliance.version>1.0</aopalliance.version>
  	<aspectj.weaver.version>1.6.4.RELEASE</aspectj.weaver.version>
  	<commons.logging.version>1.1.1</commons.logging.version>
  	<jstl.version>1.2</jstl.version>
  	<log4j.version>1.2.16</log4j.version>
  	<slf4j-api.version>1.6.1</slf4j-api.version>
  	<slf4j-nop.version>1.6.4</slf4j-nop.version>
  	<fileupload.version>1.3.1</fileupload.version>
  	<jackson.version>2.9.6</jackson.version>
  	<junit.version>4.9</junit.version>
  	<servlet-api.version>8.5.32</servlet-api.version>
  	<jsp-api.version>8.5.32</jsp-api.version>
  	
  	<!-- plugins version -->
  	<maven-compiler-plugin.version>3.8.0</maven-compiler-plugin.version>
  	<tomcat7-maven-plugin.version>2.2</tomcat7-maven-plugin.version>
  </properties>
  
  <!-- 锁定版本, -->
  <dependencyManagement>
  	<dependencies>
  		 <!-- spring -->
		<dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-core</artifactId>
		    <version>${spring.version}</version>
		</dependency>
	 	<dependency>
		   <groupId>org.springframework</groupId>
		   <artifactId>spring-web</artifactId>
		   <version>${spring.version}</version>
	    </dependency>
	    <dependency>
		   <groupId>org.springframework</groupId>
		   <artifactId>spring-tx</artifactId>
		   <version>${spring.version}</version>
	    </dependency>
	    <dependency>
		   <groupId>org.springframework</groupId>
		   <artifactId>spring-jdbc</artifactId>
		   <version>${spring.version}</version>
	    </dependency>
	    <dependency>
		   <groupId>org.springframework</groupId>
		   <artifactId>spring-webmvc</artifactId>
		   <version>${spring.version}</version>
	    </dependency>
	    <dependency>
		   <groupId>org.springframework</groupId>
		   <artifactId>spring-aop</artifactId>
		   <version>${spring.version}</version>
	    </dependency>
	    <dependency>
		   <groupId>org.springframework</groupId>
		   <artifactId>spring-context-support</artifactId>
		   <version>${spring.version}</version>
	    </dependency>
	    <dependency>
		   <groupId>org.springframework</groupId>
		   <artifactId>spring-test</artifactId>
		   <version>${spring.version}</version>
	    </dependency>
	    <!-- spring end -->
	    
	     <!-- mybais -->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis</artifactId>
		    <version>${mybais.version}</version>
		</dependency>
		<!-- mybatis - spring 整合包-->
		<dependency>
		    <groupId>org.mybatis</groupId>
		    <artifactId>mybatis-spring</artifactId>
		    <version>${mybatis-spring.version}</version>
		</dependency>
		
		<!-- json -->
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-core</artifactId>
		    <version>${jackson.version}</version>
		</dependency>
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-annotations</artifactId>
		    <version>${jackson.version}</version>
		</dependency>
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-databind</artifactId>
		    <version>${jackson.version}</version>
		</dependency>
		<!-- json end -->
  	</dependencies>
  
  </dependencyManagement>
  
  <dependencies>
    <!-- spring -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-core</artifactId>
	</dependency>
 	<dependency>
	   <groupId>org.springframework</groupId>
	   <artifactId>spring-web</artifactId>
    </dependency>
    <dependency>
	   <groupId>org.springframework</groupId>
	   <artifactId>spring-tx</artifactId>
    </dependency>
    <dependency>
	   <groupId>org.springframework</groupId>
	   <artifactId>spring-jdbc</artifactId>
    </dependency>
    <dependency>
	   <groupId>org.springframework</groupId>
	   <artifactId>spring-webmvc</artifactId>
    </dependency>
    <dependency>
	   <groupId>org.springframework</groupId>
	   <artifactId>spring-aop</artifactId>
    </dependency>
    <dependency>
	   <groupId>org.springframework</groupId>
	   <artifactId>spring-context-support</artifactId>
    </dependency>
    <dependency>
	   <groupId>org.springframework</groupId>
	   <artifactId>spring-test</artifactId>
    </dependency>
    <!-- spring end -->
        
    <!-- mybais -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	</dependency>
	
	<!-- mybatis - spring 整合包-->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis-spring</artifactId>
	</dependency>

	<!-- mysql -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>${mysql-connector.version}</version>
	</dependency>

	<dependency>
	    <groupId>cn.easyproject</groupId>
	    <artifactId>ojdbc7</artifactId>
	    <version>${ojdbc7.version}</version>
	</dependency>
	<!-- mysql end -->
	
	 <!-- 阿里巴巴的数据库连接池 -->
	<dependency>
	    <groupId>com.alibaba</groupId>
	    <artifactId>druid</artifactId>
	    <version>${druid.version}</version>
	</dependency>
	
	<!-- aop -->
	<dependency>
	    <groupId>aopalliance</groupId>
	    <artifactId>aopalliance</artifactId>
	    <version>${aopalliance.version}</version>
	</dependency>
	
	<dependency>
	    <groupId>org.aspectj</groupId>
	    <artifactId>com.springsource.org.aspectj.weaver</artifactId>
	    <version>${aspectj.weaver.version}</version>
	</dependency>
	<!-- aop end -->
	
	<!-- logging -->
	<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>com.springsource.org.apache.commons.logging</artifactId>
	    <version>${commons.logging.version}</version>
	</dependency>

	<!-- jsp标准标签库 -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>jstl</artifactId>
		<version>${jstl.version}</version>
	</dependency>
	
	<!-- log -->
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>${log4j.version}</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>${slf4j-api.version}</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-nop</artifactId>
		<version>${slf4j-nop.version}</version>
	</dependency>
	<!-- log end -->

	<!--文件上传-->
	<dependency>  
		<groupId>commons-fileupload</groupId>  
		<artifactId>commons-fileupload</artifactId>  
		<version>${fileupload.version}</version>  
	</dependency>
	
	<!-- json -->
	<dependency>
	    <groupId>com.fasterxml.jackson.core</groupId>
	    <artifactId>jackson-core</artifactId>
	</dependency>
	<dependency>
	    <groupId>com.fasterxml.jackson.core</groupId>
	    <artifactId>jackson-annotations</artifactId>
	</dependency>
	<dependency>
	    <groupId>com.fasterxml.jackson.core</groupId>
	    <artifactId>jackson-databind</artifactId>
	</dependency>
	<!-- json end -->
	
	<!-- junit单元测试 -->
	<dependency>
	    <groupId>junit</groupId>
	    <artifactId>junit</artifactId>
	    <version>${junit.version}</version>
	    <scope>test</scope>
	</dependency>
	
	<!-- servlet-api 8.5.32 -->
	<dependency>
  		<groupId>org.apache.tomcat</groupId>
  		<artifactId>tomcat-servlet-api</artifactId>
  		<version>${servlet-api.version}</version>
  		<scope>provided</scope>
  	</dependency>
	<!-- jsp-api 8.5.32 -->
	<dependency>
	    <groupId>org.apache.tomcat</groupId>
	    <artifactId>tomcat-jsp-api</artifactId>
	    <version>${jsp-api.version}</version>
	    <scope>provided</scope>
	</dependency>
  </dependencies>
  
  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.apache.maven.plugins</groupId>
  			<artifactId>maven-compiler-plugin</artifactId>
  			<version>${maven-compiler-plugin.version}</version>
  			<configuration>
  				<source>1.8</source>
				<target>1.8</target>  			
  			</configuration>
  		</plugin>
  		
  		<plugin>
  			<groupId>org.apache.tomcat.maven</groupId>
  			<artifactId>tomcat7-maven-plugin</artifactId>
  			<version>${tomcat7-maven-plugin.version}</version>
  			<configuration>
  				<url>http://localhost:8080/manager/text</url>
  				<username>joey</username>
  				<password>123123</password>
  			</configuration>
  		</plugin>
  		
  	</plugins>
  	
  	<!-- 配置文件放行 -->
    <resources>
		<resource>
			<directory>src/main/java</directory>
			<includes>
				<include>**/*.properties</include>
				<include>**/*.xml</include>
			</includes>
			<filtering>false</filtering>
		</resource>
		<!-- 放行main/resources下的配置文件 如果不放行spring mybatis等配置文件不会被打到包里从而导致错误 -->
		<resource>
			<directory>src/main/resources</directory>
			<includes>
				<include>**/*.properties</include>
				<include>**/*.xml</include>
			</includes>
			<filtering>false</filtering>
		</resource>
	</resources>
  </build>

解决依赖冲突的办法:

    1. 解决依赖冲突的办法:
      1. 直接声明:直接添加Tools.jar 2.0依赖;
      2. 排除:使用<dependency>标签中的<exclusions>标签排除A-project中的Tools.jar 1.0依赖;
      3. 依赖管理,版本锁定:<dependencyManagement>
        1. <dependencyManagement>是依赖管理,该标签下添加的<dependencies>可以声明依赖,但是不会引入jar包; 
        2. 只有声明在<project>标签下<dependencies>中的依赖才会被引用到项目中;
        3. 在<dependencyManagement>下添加jar包坐标后,<project>标签下<dependencies>标签的版本号可以忽略不写;
        4. < properties>标签可以自定义版本号,用el表达式赋值给<version>标签;
        5. 统一管理jar包版本,修改方便;

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>Maven_SSM</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
   <!-- 静态资源放行 -->
  <servlet-mapping>
  	<servlet-name>default</servlet-name>
  	<url-pattern>*.css</url-pattern>
  	<url-pattern>*.ttf</url-pattern>
  	<url-pattern>*.woff</url-pattern>
  	<url-pattern>*.js</url-pattern>
  	<url-pattern>*.png</url-pattern>
  	<url-pattern>*.jpg</url-pattern>
  	<url-pattern>*.gif</url-pattern>
  </servlet-mapping>
  
  <!-- 过滤器  解决表单post提交乱码问题 -->
  <filter>
  	<filter-name>encoding</filter-name>
  	<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  	<init-param>
  		<param-name>encoding</param-name>
  		<param-value>utf-8</param-value>
  	</init-param>
  </filter>
  <filter-mapping>
  	<filter-name>encoding</filter-name>
  	<!-- 拦截全部 /* -->
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <listener>
  	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>classpath:applicationContext_*.xml</param-value>
  </context-param>
  
  <!-- 配置springmvc前端控制器 和读取配置文件 -->
  <servlet>
  	<servlet-name>springmvc</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<!-- 读取配置文件 -->
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:springmvc.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>springmvc</servlet-name>
  	<!-- / -->
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
  
</web-app>

加上配置文件、数据库、跑个小例子,OK。

二、Maven模块化开发

整体项目结构如下:
 

maven_ssm_base是父项目,其中bean_controller_mapper_servicce都是子项目,代码来自于上个小项目,仅测试用。

可以看到父项目的文件目录下包含着子项目。

创建父项目:创建Maven project,跳过原型选择,选择打包成pom文件

创建完成之后,在pom.xml文件中添加所必须的依赖(如上文所示)。

创建子模块maven modules

其中,除了controller模块因为需要发布,所以选择打成war包,其他均选择jar包。

bean模块下的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.dunka.maven.ssm</groupId>
    <artifactId>maven_ssm_base</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>maven_ssm_bean</artifactId>
</project>

controller模块下的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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.dunka.maven.ssm</groupId>
    <artifactId>maven_ssm_base</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>maven_ssm_controller</artifactId>
  <packaging>war</packaging>
  <dependencies>
  	<dependency>
  		<groupId>com.dunka.maven.ssm</groupId>
  		<artifactId>maven_ssm_service</artifactId>
  		<version>0.0.1-SNAPSHOT</version>
  	</dependency>
  </dependencies>
</project>

三、使用nexus配置maven远程仓库

1、下载nexus官网地址:https://www.sonatype.com/download-oss-sonatype

2、解压到指定文件,利用管理员cmd模式进到其bin文件中

(1)cmd中运行 nexus.exe/install 可以安装nexus服务;

(2)cmd中运行 nexus.exe/start 可以启动nexus服务;

(3)   cmd中运行 nexus.exe/stop 可以停止nexus服务;

3、登录  http://localhost:8081

4、sign in 默认用户名:admin 密码:admin123

5、nexus仓库类型

6、Nexus使用

  • 上传jar包到远程仓库;
  1. 在Maven的 setting.xml中配置nexus访问权限;
  2. 在项目的pom.xml中配置nexus仓库位置;
  3. 以上2个配置标签中的id要一致;
  4. 使用deploy命令将项目打包,发布到nexus中;
  5. 检查仓库中是否有上传好的jar包;

 

  • 从远程仓库下载jar包:
  1. 使用profiles标签在Maven的setting.xml中配置仓库位置;
  2. 激活profiles标签,使它发生作用;
  3. 如果之前打包了,删除本地仓库下的mapper.jar;
  4. 关闭mapper子项目,让service子项目依赖mapper.jar包;
  5. 更新项目,从远程仓库中获取mapper.jar;
  • 使用自定义用户和自定义仓库进行上传和下载jar包:
  1. 建议先将管理员密码修改;
  2. 在Roles中可以增加用户权限组,里边可以自定义用户权限;
  3. 在Users中可以增加用户,分配设置好的权限;
  4. 在Repositories中新建仓库;
    1. name:仓库名称;
    2. version pollcy:版本策略;
      1. Release:发行版;
      2. Snapshot:快照版;
      3. Mixed:混合模式;
    3. Layout pollcy:布局策略;
      1. Strict:严格;
      2. Permissive:宽松;
    4. Deployment pollcy:部署策略;
      1. Allow redeploy:允许重新部署;
      2. Disable redeploy:禁止重新部署;
      3. Read-only:只读;
  5. 修改配置,将jar包上传到自定义仓库,然后从自定义仓库下载jar包;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多啦CCCC梦

你的鼓励将是我最大的创作动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值