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中设置用户 授权

 




【项目管理】Windows系统关于maven+nexus环境搭建

打算在我们的项目中引入maven,因为maven的好处显而易见,这篇文章将重点介绍maven的配置及nexus的搭建。首先先介绍maven,maven的具体配置如下:...
  • huanjileaimeidan
  • huanjileaimeidan
  • 2016年02月24日 15:10
  • 1903

windows+nexus+maven环境搭建

windows nexus环境搭建1、下载nexus 版本为 nexus-2.11.4-01-bundle 下载地址 这里写链接内容 2、将下载好的文件放到D盘进行解压 3、解压后目录结构 n...
  • u012385217
  • u012385217
  • 2016年05月09日 12:23
  • 4134

windows下使用nexus搭建maven私服

一.安装nexus 1.下载nexus,解压.我下的是nexus-2.13.0-01,到nexus-2.13.0-01\bin\jsw这个目录下,会发现有很多系统版本的nexus环境.我的电脑是win...
  • licheng989
  • licheng989
  • 2016年07月19日 22:23
  • 1466

Nexus3.0.0+Maven的使用

转载地址:  http://www.cnblogs.com/qq27271609/p/5497412.html 1、Nexus介绍      Nexus是一个强大的Maven仓库管理器,它...
  • jimmy609
  • jimmy609
  • 2016年08月23日 17:13
  • 6394

ubuntu14.04安装maven仓库管理器nexus

1.准备工作    由于nexus依赖jdk,所以需要先安装jdk。这里jdk选择jdk8,安装过程可查看博客:ubuntu14.04安装jdk1.8    nexus源码安装包: nexus-2...
  • qinhGG
  • qinhGG
  • 2017年06月21日 17:49
  • 456

Windows下搭建基于Nexus的Android Maven私服(一)

环境准备 windows10 jdk1.8 maven3.3.9 (上述环境配置过程请自行百度~) 环境检验: maven:在cmd下出现如下: C:\Users\hwj>mvn --version ...
  • huweijian5
  • huweijian5
  • 2017年02月23日 14:17
  • 662

使用Nexus搭建Maven本地仓库

转载文章:http://www.cnblogs.com/helong/articles/2254446.html 部署环境是windowsxp 首先从 http://nexus.sonaty...
  • caiwenfeng_for_23
  • caiwenfeng_for_23
  • 2015年03月23日 16:31
  • 4414

第八节:Maven搭建Nexus私服与权限管理

Nexus下载与启动:      下载地址为Nexus官网:http://www.sonatype.org/nexus/ NEXUS OSS [ OSS = Open Source Softwar...
  • hellow__world
  • hellow__world
  • 2017年05月13日 17:51
  • 7866

【Maven】Nexus配置和使用

Nexus安装   nexus安装,可以参照:【Maven】Nexus(Maven仓库私服)下载与安装 Nexus简单说明  用途:指定私服的中央地址、将自己的Maven项目指定到私服地址、从私...
  • HUXU981598436
  • HUXU981598436
  • 2017年02月09日 11:43
  • 622

Linux下使用Nexus创建私服以及内容解析

通过建立自己的私服,可以降低中央仓库的负荷,节省外网带宽,加速Maven构建,自己部署构建 http://nexus.sonatype.org/downloads/ 下载Nexus 版本分为包含Je...
  • u013008179
  • u013008179
  • 2016年03月11日 10:49
  • 720
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:maven学习笔记二(ME下运行,nexus)
举报原因:
原因补充:

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