18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

54.Maven第二天

1.Maven整合ssh框架
1)依赖传递
2)依赖版本冲突的解决:页面最下方补充例子...
1、   第一声明优先原则
2、    路径近者优先原则
        自己添加jar包
3、    排除原则
4、    版本锁定原则
3)开发中,没必要自己整合maven的ssh框架,pom配置网上有,  
   直接复制即可。
4)主要注意配置插件这里的配置工程路径。
  18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天
5)注意在项目配置文件和代码编写时。配置文件和代码暂时分离、
   他们编译后还是在一起的。这是规矩。
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

2.分模块开发
1)注意依赖范围对依赖传递造成的影响(了解)
2)创建父工程
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

3)、在pom.Xml中添加以下信息:


  <!-- 属性 -->
<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>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>${struts.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!-- 依赖管理 -->
<dependencies>
<!-- spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
</dependency>


<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!-- c3p0 -->


<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>




<!-- 导入 struts2 -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
</dependency>


<!-- servlet jsp -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
<scope>test</scope>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
</dependencies>


<build>
<plugins>
<!-- 设置编译版本为1.7 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>


<!-- maven内置 的tomcat6插件 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>tomcat-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<!-- 可以灵活配置工程路径 -->
<path>/ssh</path>
<!-- 可以灵活配置端口号 -->
<port>8080</port>
</configuration>
</plugin>


</plugins>
</build>
4).创建子模块
    1、在ssh-parent项目上右击 ,创建时选择 Maven Module
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

5)、把属于dao的代码拷贝到 该模块中(service模块相同做法):
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

6).创建action模块
   1、选择war的打包方式
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

   2. 拷贝属于action的代码和配置文件
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

  3.修改web.xml  添加spring监听


<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>
   4、添加页面:
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

5). 加*号代表从jar包里拿配置文件,其它项目是jar包、
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

3. 私服 nexus
安装nexus
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

启动服务
 18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天
启动失败的解决方法:
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天



登录nexus 
用户名/密码  admin/admin123


仓库类型
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天

Virtual   虚拟仓库 
Proxy  代理仓库
Hosted  宿主仓库  本地仓库
Group 组


4. 上传
第一步: 需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 settings.xml 文件,配置连接私服的用户和密码 。


此用户名和密码用于私服校验,因为私服需要知道上传都 的账号和密码 是否和私服中的账号和密码 一致。


    <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
<server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>


第二步: 配置项目pom.xml 


配置私服仓库的地址,本公司的自己的jar包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库


  <distributionManagement>
  <repository>
  <id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
  </repository> 
  <snapshotRepository>
  <id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
  </snapshotRepository> 
  </distributionManagement>


注意:pom.xml这里<id> 和 settings.xml 配置 <id> 对应! 


第三步:执行deploy命令发布到私服
 
5. 下载dao
第一步 修改settings.xml
<profile>   
<!--profile的id-->
    <id>dev</id>   
    <repositories>   
      <repository>  
<!--仓库id,repositories可以配置多个仓库,保证id不重复-->
        <id>nexus</id>   
<!--仓库地址,即nexus仓库组的地址-->
        <url>http://localhost:8081/nexus/content/groups/public/</url>   
<!--是否下载releases构件-->
        <releases>   
          <enabled>true</enabled>   
        </releases>   
<!--是否下载snapshots构件-->
        <snapshots>   
          <enabled>true</enabled>   
        </snapshots>   
      </repository>   
    </repositories>  
<pluginRepositories>  
    <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
        <pluginRepository>  
        <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
            <id>public</id>  
            <name>Public Repositories</name>  
            <url>http://localhost:8081/nexus/content/groups/public/</url>  
        </pluginRepository>  
    </pluginRepositories>  
  </profile>  




  <activeProfiles>
    <activeProfile>dev</activeProfile>
  </activeProfiles>


第二步 删除本地仓库中的dao


第三步 update service工程,出现以下信息说明已经成功
18.02.08,web学习第五十四天,还有半年,努力吧青年 maven第二天