Maven基础知识(3)

Maven基础知识(3)

1.jar包版本冲突问题
调节原则

(1)路径近者原则(多个包中传递依赖的版本不同,那就自己创建一个)
这里写图片描述
(2)第一声明者原则(谁先谁来)
这里写图片描述

排除原则

这里写图片描述

版本固定原则

这里写图片描述

2.异常:Exception starting filter struts2(这个我出现了两三次,一直都是web.xml有问题,所以一定要好好检查,多检查几遍,尤其是拼写啥的)

原因:web.xml的配置中可能是因为eclipse是新版的,所以总是提示web:开头,结果必须没带web。(我是一部分带了,一部分没带导致的原因)

3.项目出现红色叉叉,里面没有文件有叉叉(参考:

http://zhoshijie.iteye.com/blog/981849


1、properties->project Facets->修改右侧的version 保持一致

2、window->preferences->java->Compiler->设置右侧的Compiler compliance level

3、window->preferences->java->Installed JREs->设置或者选择右侧的Installed JREs

4.可能是新版本,提示有web:的标签,但是却无法访问该路径(访问时出现404,访问路径不存在,因为在这个坎上摔了两三次,花了好几个小时才发现这个错,所以笔记记了两遍)

这里写图片描述

5.分模块开发时,service需要依赖dao层,所以要先将dao层和parent放到仓库中去(放parent时会把已经存在的子模块(dao)顺便放进去)

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
项目关闭时以jar包形式存在
这里写图片描述

6.由于dao中的junit依赖范围是test,导致service报错,将其注释掉(注释时则默认这个包是compile,是可以传递依赖的,设为test则不能传递,但是由于项目一般是分模块开发的,不能强求每个人都要test,所以最好是设为test,只供自己测试),其实最好是在service项目模块中也导入依赖范围为test的包

这里写图片描述

7.依赖范围对直接依赖的影响

这里写图片描述

8.另一种测试方式

这里写图片描述
@ContextConfiguration(locations ={“classpath*:applicationContext-*.xml”})
classpath*:表示还包括从jar包中取出的xml文件

9.当直接依赖的项目是打开的,则可以直接添加依赖,若是关闭的,则要更新仓库,每个项目结束时要顺手上传仓库。
10.异常:Failed to execute goal on project ssh-web: Could not resolve dependencies for project com.java:ssh-web:war:0.0.1-SNAPSHOT: Could not find artifact com.java:ssh-service:jar:0.0.1-SNAPSHOT -> [Help 1]

找不到依赖,检查缺失的依赖,每次都要将项目上传。

11.如果私服启动不了,则到下面的文件中修改

这里写图片描述
这里写图片描述

12.关于私服的上传和下载来自学习的视频的笔记
上传dao
第一步: 需要在客户端即部署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这里 和 settings.xml 配置 对应!

第三步:执行deploy命令发布到私服
13.下载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工程,出现以下信息说明已经成功

这里写图片描述

Maven粗略学习完毕,这里用的是ssh框架,下次练练ssm框架。

猜你喜欢

转载自blog.csdn.net/zpr5554321/article/details/79845562