maven学习笔记二(ME下运行,nexus)

转载 2016年08月29日 22:44:51

1、配置自己的maven ,并配置自己的maven仓库

2、建立的项目中  src/main/resource 放配置文件      约定优于配置
  src/test/resource 放配置文件

3、pom.xml中配置依赖,可以自动下载包,中央找pom.xml

4    例如 三个项目,user-core  user-log  user-service   

         前两个要 clean  install    第三个 引用   ,如果第一个user-core导入过commons-logging  ,则导入user-core项目的项目也会自动导入commons-logging包.

   <dependency>
      <groupId>com.yanlei.use</groupId>
      <artifactId>user-log</artifactId>
      <version>0.0.1-SNAPSHOT</version>
    </dependency>
    
      <dependency>
      <groupId>${project.groupId}</groupId> // 表达式,表示本项目
      <artifactId>user-core</artifactId>
      <version>${project.version}</version> //表达式
    </dependency>

5        scope 默认的是compile
            compile 编译范围有效 此包会往下会传递
             provide   打包不打进去 ,编译测试的时候会使用此包,,,,,,,, 如servlet-api,运行时 TOMCAT提供,打包如果打入,会冲突
              runtime  编译时候不依赖, 运行时依赖   mysqlconnect  只有运行时才需要,提供所写代码的接口实现.
                  test   测试的时候依赖,打包时候不打.   如JUINT,DBUnit  不会传递,防止没用包太多 

6  依赖传递.     c-->b   b-->a    所以c依赖a

        D-->A  A-->B1      D-->C C-->B2      D依赖B1(D-A-B1,D-C-B2 那个先写依赖那个) (想依赖B2,   在A中<exclusive>B1GroupID 和artifactID  可以排除A下级中的依赖)

        D-->A A-->B1        D-->C C-->B2      D-B3    D依赖B3 (D-A-B1,D-C-B2,D-B3)直接依赖层次短的 

7    聚合三个模块,,,  写个简单的maven项目  pom.xml中 ,也可以吧pom放在三个模块的共同目录下, 然后改下路径 user-core.xml即可.

      <!-- 聚合三个模块 -->

	<modules>
		<module>../user-core</module>
		<module>../user-log</module>
		<module>../user-service</module>
	</modules>

8    每个模块有很多公共部分,可以把公共部分抽取出来,写成父类,然后其他继承.

      父类一样是新建个简单的maven项目,可以公共的部分有   

      父类pom.xml

<span style="white-space:pre">	</span><url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

	<dependencyManagement>             //只是负责管理,继承他的项目并不会拥有它的包
		<dependencies>
			<dependency>
				<groupId>junit</groupId>
				<artifactId>junit</artifactId>
				<version>3.8.1</version>
			</dependency>
			<dependency>
				<groupId>commons-logging</groupId>
				<artifactId>commons-logging</artifactId>
				<version>1.2</version>
			</dependency>
		</dependencies>
	</dependencyManagement>
     子类

 

<span style="white-space:pre">	</span><parent>
		<groupId>com.yanlei.user</groupId>
		<artifactId>user-parent</artifactId>                                //父类的
		<version>0.0.1-SNAPSHOT</version>
		<relativePath>../user-parent/pom.xml</relativePath>                 //父类的路径,如果是在公共目录下,可以写成pom.xml
	</parent>

	<artifactId>user-service</artifactId>
	<packaging>jar</packaging>

	<name>user-service</name>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>                               //可以不用写版本了,父类中有版本                                
		</dependency>

		<dependency>
			<groupId>com.yanlei.user</groupId>
			<artifactId>user-log</artifactId>
			<version>0.0.1-SNAPSHOT</version>                            //自己依赖的包
		</dependency>

		<dependency>
			<groupId>com.yanlei.user</groupId>
			<artifactId>user-core</artifactId>
			<version>${project.version}</version>
		</dependency>

	<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>                       <span style="font-family: Arial, Helvetica, sans-serif;">//可以不用写版本了,父类中有版本       </span>
		</dependency>

	</dependencies>

9    添加 nexus sonatype 类似私服,建在自己的局域网,方便大家下载,不用每次都去中央仓库

     下载 nexus-2.10.0-02-bundle.zip包,配置其 bin 到path下, 然后修改 bin/jsw/conf/wrapper.java.command 为java的绝对路径,包含Java程序

       cmd下安装nexus install 服务,然后启动 ,

       进行访问   http://localhost:8081/nexus/#welcome login  admin admin123

10  使用nexus .

        host类型的工厂,针对内部, 面向内网. mvn deploy  

          可以吧自己的项目提交跟工厂,根据snapshot,releases 分,3rd 针对找不到pom.xml的包,自己去官网下,,,,手动,导入

            center工厂 nexus中没有的包,   去中央工厂下载,然后放入数据放入center工厂,


(以后新增一个包,如果组中的各工厂有,从nexus中下载,如果没有,通过nexus 到中央工厂下载)

        

   方法一:     可以在父类中,一个一个的将仓库导入,但是太麻烦,可以把几个仓库组合成一个组,放入public Respositories 然后用他一个URL就方便了许多.

               <repositories>

	<span style="white-space:pre">	</span><repository>
	<span style="white-space:pre">	</span></repository>
	</repositories>
	<repositories>
		<repository>
			<id>nexus</id>
			<name>Nexus Repository</name>
			<url>http://localhost:8081/nexus/content/groups/public/</url>    //其他人使用,可以改变ip地址即可
			<releases>
				<enabled>true</enabled>
			</releases>
			<!-- 默认关闭 -->
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>

方法二:按方法一,每个项目都要导入一次,太麻烦,可以在setting.xml中  

             生成仓库  

    <profile>
      <id>nexusRepo</id>
  
      <repositories>
			<repository>
				<id>nexus</id>
				<name>Nexus Repository</name>
				<url>http://localhost:8081/nexus/content/groups/public/</url>
				<releases>
					<enabled>true</enabled>
				</releases>
				<!-- 默认关闭 -->
				<snapshots>
					<enabled>true</enabled>
				</snapshots>
			</repository>
      </repositories>
    </profile>
      激活上面仓库:  注销 父类中的 <repositories>就可以了.

            

    <activeProfiles>
    <activeProfile>nexusRepo</activeProfile>
 

11  

在setting中,配置镜像
    <mirror>
      <id>nexusMirror</id>
      <mirrorOf>nexus,central</mirrorOf>  或者* 代表所有工厂
      <name>Human Readable Name for this Mirror.</name>
      <url>http://localhost:8081/nexus/content/groups/public/</url>
    </mirror>
 访问nexus自定义的工厂,central(maven-model-builder-3.3.9中)工厂,都自动找配的url,找不到就不会去中央工厂(被屏蔽了)了.


12

maven-model-builder-3.3.9中的pom.xml,若想改变中央工厂的属性,在setting中,  
<profile>
<repositories>
<repository> 
<id>central</id> 
<name>Central Repository</name>
  <url>https://repo.maven.apache.org/maven2</url>
  <layout>default</layout> 
<snapshots> 
<enabled>false</enabled>
       </snapshots> 
</repository>
  </repositories>
<profile>
<!--激活生效-->
    <activeProfiles>
    <activeProfile>central</activeProfile>
这样就可以使新的中央工厂的配置生效


13  注:装了nexus后,本地仓库有,而nexus没有, 也会先找nexus,可以更新下索引 


14

         发布自己的项目, parent中pom.xml           -----------------clean deploy 

        不过在parent.xml中  

	<distributionManagement>
		<repository>
			<id>user-release</id>                     //发布release程序
			<name>user release resp</name>
			<url>http://localhost:8081/nexus/content/repositories/releases/</url>  到release的工厂
		</repository>

		<snapshotRepository>
			<id>user-snapshots</id>                    //发布snapshots的程序
			<name>user snapshots resp</name>
			<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>   到snapshot的工厂
		</snapshotRepository>

	</distributionManagement>
      然后再setting.xml中授权,这样就可以把 自己的项目发布到 nexus的仓库中,.....也再一次说明了,host的仓库,是针对内部的仓库. 接受内部项目....center仓库 接受外部jar包

    <server> 
      <id>user-release</id>          //id跟上面的id匹配
      <username>admin</username>
      <password>admin123</password>
    </server>

	<server>
      <id>user-snapshots</id>          //id跟上面的ID匹配
      <username>admin</username>
      <password>admin123</password>
    </server>

  </servers>


15  在nexus中也可以建立自己的仓库,管理自己的模块, 建立的项目必须为host 仓库,然后 配置权限,赋予角色,建立用户.

       仓库必须为两个,一个release,一个snapshot的. ..

        部署的话,还是按照以上,先配置  <distributionManagement>  然后再setting中设置用户 授权

 




Maven学习笔记二:Nexus私服搭建

Nexus是一种流行的Maven远程仓库,我们知道Maven一般有两种仓库,本地仓库和远程仓库,中央仓库是Maven自带的远程仓库,除了中央仓库之外,还存在许多特殊的远程仓库,私服便是一种特殊的远程仓...
  • pzoozq
  • pzoozq
  • 2015年07月05日 23:50
  • 902

maven学习笔记【二】私服Nexus

Nexus的详细介绍以及安装 简介         Nexus是Maven仓库管理器,也可以叫Maven的私服。Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库...

maven学习笔记(四)仓库、nexus私服

构件:在maven中,任何一个依赖(jar包)、插件(maven-compiler-plugin-2.5.1.jar)或者项目输出(前面例子中运行mvn clean install部署到本地仓库的ja...

maven学习笔记【三】私服Nexus使用

本文转自:http://blog.csdn.net/shenshen123jun/article/details/9084293 私服是什么 私服,私有服务器,是公司内部Maven项目经常需要的东...

maven学习笔记(五)nexus私服-创建hosted仓库

上篇文章中项目最终发布的release仓库和快照仓库都是nexus的默认仓库,若所有的本地开发项目版本都发布到同一个仓库,可能会造成冲突。因此,我们可以为每一个项目创建一组仓库(快照版本和releas...

Java Web 学习笔记(三) 利用 Nexus 搭建 Maven 本地私服

Nexus介绍Nexus是一个Maven仓库管理器,用来搭建私有仓库服务器。建立公司/组织的私有仓库的的好处是便于管理,节省公网带宽,利用内网下载依赖项速度快,还有一个非常有用的功能就是能有效管理内部...

MAVEN学习笔记之私服Nexus(2)

MAVEN学习笔记之私服Nexus(2) 私有服务器搭建 Nexus www.snatype.org下载 snatype-work 是默认nexus存储nexus a:将b...

[maven学习笔记]第二节-搭建nexus的介绍和安装

1、 为什么使用Nexus       如果没有私服,我们所需的所有构件都需要通过maven的中央仓库和第三方的Maven仓库下载到本地,而一个团队中的所有人都重复的从maven仓库下 载构件无疑加...

maven学习笔记5--maven使用Nexus搭建私服

前面的文章中我们了解到maven的仓库一共有三种: 1.中央仓库 2.私有仓库 3.本地仓库 一般情况下 是本地仓库从中央仓库直接下载 依赖包,但是因为网速等问题影...

不错的maven学习笔记,收藏——Maven学习 (四) 使用Nexus搭建Maven私服

为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到...
  • wauit
  • wauit
  • 2014年09月24日 16:51
  • 485
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:maven学习笔记二(ME下运行,nexus)
举报原因:
原因补充:

(最多只允许输入30个字)