搭建 Nexus2.7.2
搭建 Nexus2.7.2-03 Maven3.1.1 JAVA Project 管理 第一节:Nexus 研究汇总 1 Nexus 概念、作用 仓库管理器有两个服务目的:首先它的角色是一个高度可配置的介于你的组织与公开Maven仓库之间的代理,其次它为你的组织提供了一个可部署你组织内部生成 的构件
搭建 Nexus2.7.2-03 + Maven3.1.1 JAVA Project 管理
第一节:Nexus 研究汇总
1 Nexus 概念、作用
仓库管理器有两个服务目的:首先它的角色是一个高度可配置的介于你的组织与公开Maven仓库之间的代理,其次它为你的组织提供了一个可部署你组织内部生成
的构件的地方。代理Maven仓库有很多好处。对于一开始使用Maven的情况来说,通过为所有的来自中央Maven仓库的构件安装一个本地的缓存,你将加速组织内部的
所有构建.
2 Nexus 安装
1):官方下载http://www.sonatype.org/nexus/ 安装包,包下载分二种1:含有JETTY WEB容器的BUNDLE包 2:不含WEB容器的WAR包
2):解压,以当前根目录D:\ThridFarme为例:
打开:${NEXUS_HOME}\bin\jsw\windows-x86-64,依次运行install-nexus.bat、start-nexus.bat,运行nexus
官网说明: Open Nexus Professional in a Web Browser,ifyou accept all of the defaults, Nexus Professional can be accessed by pointingyour browser at http://localhost:8081/nexus and entering in the following trialcredentials:
username: admin password: admin123
3 Nexus 管理操作
即http://localhost:8081/nexus管理,暂缺
第二节:Maven3 研究汇总
1 Maven3 概念、作用
Maven3概念:
Maven是基于项目对象模型(POM),通过一小段描述信息来管理项目的构建,也是报告和文档的软件项目管理工具; 它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(DependencyManagement System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。使用Maven时,用一个明确定义的项目对象模型来描述你的项目,Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
Maven 有一个项目生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的目标步骤,直到到达你指定的生命周期,过程中Maven会运行许多默认的插件目标,像编译compile和创建JAR(jar) 文件类似工作。
Maven3作用:
Maven能够很方便管理项目的构建、项目报告、生成站点、管理JAR文件等等。
MAVEN概念模型:

图1
POM简介:包含了四类描述和配置项目
1) POM关系:一个项目很少孤立存在;它会依赖于其它项目,可能从父项目继承POM设置,它要定义自身的坐标,可能还会包含子模块。
2)构建设置:在这一部分,我们自定义Maven构建的默认行为。我们可以更改源码和测试代码的位置,可以添加新的插件,可以将插件目标绑定到生命周期,我们还可以自定
义站点生成参数。
3)总体信息:它包含了一个项目的而名称,项目的URL,发起组织,以及项目的开发者
贡献者列表和许可证。
4)构建环境:构建环境包含了一些能在不同使用环境中 激活的profile。例如,在开发过程中你可能会想要将应用部署到一个而开发服务器上,而在产品环境中你会需要将
应用部署到产品服务器上。构建环境为特定的环境定制了构建设置,通常它还会
由~/.m2中的自定义settings.xml补充。
图2
2 Maven3 核心流程
2.1maven管理的目标:工程(Software Project)
图3
软件工程的唯一标识是由团体标识的约定ID(groupId)、单独项目的唯一标识符(artifactId)、版本(version) 共同决定;
PackageType:每个工程都有一个打包类型,可以是jar, war, ear 或 pom,打包类型决定工程最终产物的类型,其中pom类型用于构件多模块工程。
工程之间有两种关系:依赖(dependency)和聚合()
依赖:是类与类之间的连接. 表示一个类依赖于另一个类的定义. 依赖关系总是单向的 。可以简单的理解,就是一个类A使用到了另一个类B

图4
关联(association)关系: 表示类与类之间的联接, 体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,它使一个类知道另一个类的属性和方法. 关联可以使用单箭头表示单向关联, 使用双箭头或不使用箭头表示双向关联, 关联有两个端点, 在每个端点可以有一个基数, 表示这个关联的类可以有几个实例. 常见的基数(0..1:0、0..*、1、1..*)
图5
聚合: 关联关系的一种特例, 是强的关联关系. 聚合是整体和个体之间的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;
图6
2.1.1 工程依赖关系
(1)依赖关系的管理,是maven最为强大特征之一。一个工程可以依赖多个其他工程, 通过工程的唯一标识(groupId+artifactId+version)可以明确指明依赖的库及版本,而且能够处理依赖关系的传递(transitive dependencies),如图7:
图7
(2)maven可以指定依赖的作用范围(scope),包括以下几种:
图8
compile范围(默认):编译范围依赖,在编译,测试和运行中都依赖于类包,在所有的classpath中可用,同时它们也会被打包。
test范围: JUnit测试范围(test)的依赖,运行compiler:testCompile和surefire:test目标的时候才会将POM依赖JAR包被加入classpath中
provided范围:已提供范围依赖,开发过程只有在编译(classpath)和测试时需要一个类库,而该类库在运行的时候由容器提供,它们不是传递性的,也不会被打包,不会被捆绑在构建的输出中,可用于排除WAR文件中特定的依赖。如Servlet API的JAR文件包不会在web应用WEB-INF/lib目录下生成。
Runtime:运行时范围依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实现。
system(系统范围):system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中JAR文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库的一部分。这样的构件应该是一直可用的,Maven也不会在仓库中去寻找它。如果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath元素。
(不推荐使用的,应该尽量从公共或定制的Maven仓库中引用依赖)。
Maven如何解决依赖关系的传递性可能导致依赖的版本、scope等发生冲突问题? maven提供了仲裁机制(最短路径原则、依赖的排除 、依赖的显示声明)。
查看项目依赖关系树:mvn dependency:tree
2.1.2 工程聚合关系
前面提到pom类型用于于构件多模块工程,这体现了project之间的一种聚合关系:将一系列小的模块聚合成整个产品。
通过聚合后的工程可以同时管理每个相关模块的构建、清理、文档等工作。 聚合关系通过在子工程中指定一个pom类型的project作为父project来定义。

图9
2.2 maven的核心:生命周期和阶段

图10
maven将工程(Project)的构建过程理解为不同的生命周期(LifeCycle)和阶段(Phase)。 在工程的构建过程中,存在着不同的生命周期,这些生命周期互相独立,之间也没有一定的顺序关系。 每个生命周期又划分为不同的阶段(Phase)。阶段之间有明确的顺序关系, 同一生命周期内的阶段必须按顺序依次执行。
maven内置了三个生命周期,并为每个生命周期内置了一些阶段。下面列举出maven内置的生命周期及主要的阶段:
图11
· default:构建(Build)
1. validate:验证项目是否正确,所有必需的信息是否可用。
2. compile:编译项目中的代码。
3. test:用相关的单元测试框架测试编译后的代码,这些运行的测试并不会随项目打包和布署。
4. package:将编译后的代码打包成相应的格式文件,如jar包。
5. integration-test: 如果需要在一个综合环境中运行我们的测试,这个阶段将会运行和布署项目到该环境中。
6. verify: 检查项目的包是否正确和符合要求。
7. install:将包安装到本地maven仓库,可以让其他项目作为依赖使用该包。
8. deploy:将包发布到远程的maven仓库,并提供给其他开发者使用。
· clean:清理
1. pre-clean 准备清理
2. clean 执行清理工作
3. post-clean 执行清理后的后续工作
· site:生成项目文档和站点
1. pre-site 准备生成
2. site 生成项目站点和文档
3. post-site 执行生成文档后的后续工作
4. site-deploy 发布项目文档
更详细的phase说明参考: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
再者像mvn package:此命令行并没有指定一个插件目标,而是指定了一个Maven生命周期阶段。阶段是在被Maven称为“构建生命周期”中的一个个步骤。生命周期是包含在一个项目构建中的一系列有序的阶段。
图12
2.3 功能实现:插件和Goal

图13
Maven中定义的工程周期和阶段只是抽象的概念,不涉及具体的功能。 具体的功能由插件(Plugin)实现。一个Maven插件是一个单个或者多个目标(Goal)的集合。Maven有一些简单但核心的插件,像Jar插件,它包含了一组创建JAR文件的目标,Compiler插件,它包含了一组编译源代码和测试代码的目标,或者Surefire插件,它包含一组运行单元测试和生成测试报告的目标。而其它的,更有专门的插件包括:Hibernate3插件,用来集成流行的持久化框架Hibernate。Maven也提供了自定义插件的能力。
图14
为了解耦插件的功能和工程阶段,实现高度的可配置性,maven规定插件只是实现目标的功能, 通过配置来决定在哪个阶段执行(Execution)哪些目标操作。 甚至可以把一个Goal绑定到多个Phase,以实现复用。
maven内置了一些默认的插件,并根据不同的工程packing类型在各个phase中默认绑定了一些goal。 下表中列出default生命周期中各阶段默认绑定的goal,其中goal按照管理使用plugin name:goalname的方式标记:
图15
Site:
最后需要说明的是,maven的插件是一种packaging类型为maven-plugin的project, 可以使用maven project的依赖,配置插件等等一切特性。
2.4 仓库(Repository)
Maven仓库是通过结构来定义的,一个Maven仓库是项目构件的一个集合,这些构件存储在一个目录结构下面,它们的格式能很容易的被Maven所理解。在一个Maven仓库中,所有的东西存储在一个与Maven项目坐标十分匹配的目录结构中。你可以打开浏览器,然后浏览中央Maven仓库http://repo1.maven.org/maven2/ 来看这样的结构。
Maven仓库的标准是按照下面的目录格式来存储构件,相对于仓库的根目录:
/
Maven从远程仓库下载构件和插件到你本机上,存储在你的本地Maven仓库里。一旦
Maven已经从远程仓库下载了一个构件,它将永远不需要再下载一次,因为maven会首
先在本地仓库查找插件,然后才是其它地方。
项目依赖于一些既不免费也不公开的包。在这种情况下,你需要要么在你组织的网络里安装一个定制的仓库,要么手动的安装这些依赖。默认的远程仓库可以被替换,或者增加一个你组织维护的自定义Maven仓库的引用。
仓库可以分为本地库(local)和远程库(remote)。本地库通常位于本机的~/.m2/repository文件夹, 远程库最常见的是maven中央库,此外也会有一些私服库用于企业内部。
2.4 小结:MAVEN核心概念
图16
|
|
概念 |
说明 |
LifeCycle |
生命周期,maven内置default,sie,clean三个生命周期 |
Phase |
阶段,每个生命周期有不同的阶段 |
Plugin |
插件,实现实际的构建功能 |
Goal |
一个插件可以实现多个goal,goal具备具体的功能 |
Execution |
通过配置,决定在某个Phase执行哪些Goal |
Project |
maven管理的目标:软件工程,小的工程可以聚合成大工程 |
PackageType |
为了便于管理工程,按照构建目标区分成不同的工程类型,如jar,war,ear等 |
Dependency |
依赖,project之间存在依赖关系 |
DependencyScope |
maven对依赖定义了不同的作用范围 |
Management |
可以配置一个工程如何管理依赖关系 |
Repository |
仓库,存放包,分为本地库和远程库 |
Build |
构建的动作。使用maven管理工程,主要是指定将project构建到某个phase |
3 Maven3 安装
见:http://blog.csdn.net/jun55xiu/article/category/1439861
验证安装:mvn -version
4 常见应用
1)创建一个Project
mvn archetype:create -DgroupId=com.mycompany.app
-DartifactId=my-app-DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
mvn archetype:generate 固定格式OR create
-DgroupId 组织标识(包名)
-DartifactId项目名称
-DarchetypeArtifactId 原型ArchetypeId:maven-archetype-quickstart,创建一个JavaProject;maven-archetype-webapp,创建一个WebProject
-DinteractiveMode 是否使用交互模式
2)命令
编译源代码 mvn compile
编译测试代码mvn test-compile
清空mvn clean
运行测试 mvn test
生产站点目录并打包 mvn site-deploy
安装当前工程的输出文件到本地仓库 mvn install
打包 mvn package
先清除再打包mvn clean package
打成jar包mvn jar:jar
生成eclipse项目mvneclipse:eclipse
查看帮助信息mvn help:help
查看maven有哪些项目类型分类 mvn archetype:create -DarchetypeCatalog=intrenal
3)构建一个简单Java项目
mvn archetype:create -DgroupId=cn.luxh.app-DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart-DinteractiveMode=false
4)构建一个简单JAVA WEB项目
mvn archetype:create -DgroupId=cn.luxh.app -DartifactId=my-web-app -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false
回车
cd :/%roo%/my-web-app/,执行:mvn package
构建成功后,my-web-app项目target目录/my-web-app.war
集成tomcat、Jetty发布运行,需要配置pom.xml
Tomcat:
<span><span>build</span><span>></span></span>
<span><span>finalName</span><span>></span>my-web-app<span></span><span>finalName</span><span>></span></span>
<span><span>pluginManagement</span><span>></span></span>
<plugin></plugin>
<groupid>org.codehaus.mojo</groupid>
<artifactid>tomcat-maven-plugin</artifactid>
<version>1.1</version>
<configuration></configuration>
<path>/wp</path>
<port>8080</port>
<uriencoding>UTF-8</uriencoding>
<url>http://192.168.0.95:8080/manager/html</url>
<server>tomcat6</server>
<span></span><span>pluginManagement</span><span>></span>
<span></span><span>build</span><span>></span>
Jetty:
<span><span>build</span><span>></span></span>
<span><span>finalName</span><span>></span>my-web-app<span></span><span>finalName</span><span>></span></span>
<span><span>pluginManagement</span><span>></span></span>
<span><!--</span><span>配置</span><span>Jetty--></span>
<span><span>plugins</span><span>></span></span>
<span><span>plugin</span><span>></span></span>
<span><span>groupId</span><span>></span>org.mortbay.jetty<span></span><span>groupId</span><span>></span> </span>
<span><span>artifactId</span><span>></span>maven-jetty-plugin<span></span><span>artifactId</span><span>></span></span>
<span></span><span>plugin</span><span>></span>
<span></span><span>plugins</span><span>></span>
<span></span><span>pluginManagement</span><span>></span>
<span></span><span>build</span><span>></span>
执行:mvn tomcat:run jetty:run 就可以在8080端口上访问应用
5)标准的Maven JAVA项目生成框架
6)Maven的默认设置
在某个项目基础目录执行命令:$ mvn help:effective-pom
见‘Maven Dafalut pom.xml’
7)Maven 齐全POM配置文件要素说明
见‘maven_POM.xml详解’
第三节:用nexus搭建maven私服
见‘搭建Maven私服_并配置Nexus环境(完美版本).pdf’
第四节:eclipse+nexus+maven+JAVA Project管理实战
后期完善
注:maven个人推荐书籍:Maven权威指南(中文版)以及官网(mvnex、mvnref英文版)

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在Vue框架下,如何快速建立統計圖表系統在現代網頁應用中,統計圖表是必不可少的組成部分。 Vue.js作為一個流行的前端框架,提供了許多方便的工具和元件,能夠幫助我們快速建立統計圖表系統。本文將介紹如何利用Vue框架以及一些外掛程式來建立一個簡單的統計圖表系統。首先,我們需要準備一個Vue.js的開發環境,包括安裝Vue腳手架以及一些相關的插件。在命令列中執行以下命

玩家在霧鎖王國中進行遊戲時可以收集不同的材料用來建造建築,有很多玩家想知道野地搭建築嗎,霧鎖王國能野地是不能搭建築的,必須要在祭壇的範圍內才可以搭建。霧鎖王國能野地搭建築嗎答:不能。 1.霧鎖王國能野地是不能搭建築的。 2、建築必須要在祭壇的範圍內才可以搭建。 3、玩家可以自行放置靈火祭壇,但一旦離開了範圍,將無法進行建築搭建。 4.我們也可以直接在山上挖個洞當做我們的家,這樣不用耗建築材料。 5.玩家自己搭建的建築中,有舒適度機制,也就是說,內裝越好,舒適度越高。 6.高舒適度將為玩家帶來屬性加成,例如

CentOS7下搭建web伺服器的最佳實務及注意事項引言:在當今網路時代,web伺服器是建置和託管網站的核心元件之一。 CentOS7是一個強大的Linux發行版,廣泛應用於伺服器環境。本文將探討在CentOS7上建立web伺服器的最佳實務和注意事項,並提供一些程式碼範例以幫助您更好地理解。一、安裝ApacheHTTP伺服器Apache是使用最廣泛的w

PyTorch安裝指南:在PyCharm中快速搭建開發環境PyTorch是當前深度學習領域中備受歡迎的框架之一,具有易用性和靈活性的特點,深受開發者青睞。本文將為大家介紹如何在PyCharm中快速建置PyTorch的開發環境,方便大家開始深度學習專案的開發。步驟一:安裝PyTorch首先,我們需要安裝PyTorch。 PyTorch的安裝通常需要考慮到系統環境

隨著行動互聯網的快速發展,短視訊應用程式抖音已成為人們日常生活中不可或缺的一部分。擁有一個高人氣的抖音帳號,不僅能吸引粉絲關注,還能帶來商業價值。那麼,如何搭建一個最好的抖音帳號呢?一、抖音帳號怎麼搭建最好? 1.定位清晰在創造抖音帳號之初,首先要明確自己的定位。你想成為搞笑幽默的段子手,還是專業知識分享者?明確定位有助於吸引精準粉絲,進而增加帳號的價值。 2.帳號命名一個好的帳號名字能讓粉絲一眼記得你。帳號名字應簡潔明了,與自己的定位相關,同時具有一定的創意。避免使用過於常見的名字,以免與他人混淆

在當下資訊充斥的時代,社群媒體平台成為人們獲取和分享資訊的主要途徑。對於個人和企業而言,建立一個有效的帳號網路以實現資訊的最大傳播和提升影響力,已成為亟需解決的挑戰。一、帳號矩陣怎麼搭建? 1.明確目標族群在建立帳號矩陣之前,關鍵在於明確目標受眾,深入了解他們的需求、興趣和消費習慣,這樣才能製定更具針對性的內容策略。 2.選擇合適的平台依照目標族群的特點,選擇適合的社群媒體平台進行佈局。目前主流的社群媒體平台有微博、微信、抖音、快手等,每個平台都有其獨特的使用者群體和傳播特點,需要根據實際情況進行選

Node.js是一個非常流行的伺服器端運作環境,它使用JavaScript編寫,可以讓開發者使用相同的程式語言進行前後端開發。 Node.js的高效能和靈活性使得它成為了Web開發中的一個重要組成部分。在本文中,我們將學習如何使用Node.js來建立一個簡單的檔案管理系統。為了實現這個功能,我們需要使用Node.js的基本模組fs(filesystem)和h

CentOS7下搭建web伺服器的網路安全加固技巧web伺服器是現代互聯網的重要組成部分,因此保護web伺服器的安全性非常重要。透過加強網路安全,可以減少風險和避免潛在的攻擊。本文將介紹在CentOS7上建置web伺服器時常用的網路安全加固技巧,並提供對應的程式碼範例。更新系統和軟體首先,確保你的系統和軟體是最新版本。可以使用以下命令更
