- 浏览: 258858 次
- 性别:
- 来自: 杭州
-
文章分类
最新评论
-
qingtingchen:
请问下如果只有uid/emial 和密码的话要怎样进行认证
【总结】Spring LDAP整理 -
cylboke:
太给力了,搞了一下午,一直换jar版本,不起作用,用楼主的方法 ...
【学习】spring MVC之返回JSON数据(Spring3.0 MVC+Jackson+AJAX) -
hu3625067:
楼主写的很精辟,言简意赅,非常实用
【总结】Spring LDAP整理 -
hu3625067:
写的很精辟,很实用
【总结】Quartz整理 -
Mr小血:
找了好久,终于找到解决办法了,谢谢
formvalidator4.1.3 - 校验时不能自定义向后台传值的BUG问题
Maven是一个实用且优秀的构建工具,我之于Maven只能算入门,通过阅读许晓斌的《Maven实战》让我对Maven有了整理的认识以及更深入的了解。
本文是阅读笔记,包括列出了重要的资源链接。本文没有太多的实际内容,只是很宽泛的记录了关于Maven的知识库。
-------------------------------------------------------------------------
以下是我本人的书评
书是前几年就买了的,但是跟很多人一样,对于maven的学习,可能都是直接网上查下,怎么download,然后下载eclipse插件m2e,快速上手。对于Maven并没有形成系统的知识库。本书的内容涵盖入门篇、进阶篇以及高级篇,比如hello world的例子、maven插件编写、archetype编写等等。总之很全面。同时也介绍了很多maven的优秀插件。
特超所值的一本书,比起在网上搜集maven入门的资料(博客),倒不如花一天时间看《Maven实战》来学习Maven这个Java世界中的实用工具!
-------------------------------------------------------------------------
Apache Maven主页: https://maven.apache.org
书目录列表:
1. Maven简介
2. Maven的安装和配置
3. Maven使用入门
4. 背景案例
5. 坐标和依赖(Coordinate and Dependency)
6. 仓库(Repository)
7. 生命周期和插件(lifecycle and plugin)
8. 聚合与继承(aggregate and inherit)
9. 使用Nexus创建私服
10. 使用Maven进行测试
11. 使用Hudson进行持续集成
12. 使用Maven构建Web应用
13. 版本管理
14. 灵活的构建
15. 生成项目站点(site生命周期介绍)
16. m2eclipse(eclipse的插件)
17. 编写Maven插件
18. Archetype
-------------------------------------------------------------------------
1-4章为基本知识,以及利用“Hello world”入门(结合IDE)。
POM.xml,(POM:project Object Model)
settings.xml:用户目录下的:~/.m2/settings.xml
-------------------------------------------------------------------------
5-8章算是进阶章,介绍了重要的概念:坐标、依赖、仓库、生命周期、插件、聚合及继承。
构成唯一坐标的元素: groupId、artifactId、version、packaging、classifier
第5章: 依赖相关:
dependencies: dependency: groupId, artifactId, version, type, scope, optional, exclusions.
其中:
scope配置了目标依赖jar与项目classpath的关系。见下表:
optional: if true,依赖不会被传递,只会对当前项目有效。默认false。
exclusions: 排除特定的依赖。
附加一个properties: 定义全局变量
Useful mvn command:
> mvn dependency: list
> mvn dependency: tree
> mvn dependency: analyze
第6章: 仓库相关:
配置repositories: id, name, url, releases, snapshots
部置至远程仓库方法
介绍了镜像mirrors: id, name, url, mirrorOf
【重要】仓库搜索服务:
1. Sonatype Nexus: http://repository.sonatype.org
2. Jarvana: http://www.jarvana.com/jarvana
3. MVNbrower: http://www.mvnbroser.com
4. MVNrepository: http://mvnrepository.com
第7章: 生命周期和插件
独立的生命周期: clean、default(核心)、site
每个生命周期过都包含了好多个阶段(phase)
具体戳: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Maven的核心仅仅定义了抽象的生命周期,具体的任务是交由插件完成的,插件以独立的构件形式存在。
plugin: 插件绑定、自定义绑定等。
在线插件信息: http://maven.apache.org/plugins/index.html
插件仓库
第8章: 聚合和继承
packaging = pom
聚合的核心配置: modules
继承:
parent: groupId, artifactId, version, relativePath
可继承的POM元素列表(几十个): groupId, version, dependencies... 等。
在父pom中使用dependencyManagement声明依赖的版本(version),起到统一管理version的作用,从而降低依赖冲突。
scope = import,导入目标pom并合并到当前dependencyManagement中。
插件管理元素: pluginManagement
Maven的核心设计理念: 约定优于配置(conversion over configuration)。
反应堆(reactor): 指所有模块组成的一个构建结构。
构建顺序: 模块间的依赖关系是有向非循环的。
操作反应堆的命令行: -am, -amd -also-make-dependents, -pl, --projects <arg>, -rf -resume-from <arg>
-------------------------------------------------------------------------
第9章是关于创建私服的,当前市场上主要有三种管理私服的工具:
Nexus ['neksəs],是连接的意思。下载页面: http://nexus.sonatype.org/downloads/
安装方式(Nexus是java web app):
Login: admin/admin123
Type:
提供搜索Maven中央库的功能。
配置Maven: setting.xml: 定义<profile>, 激活<activeProfile>
创建一个匹配任何仓库的镜像: 使Maven下所有的下载都通过Nexus:mirrorOf = *
部置构件至Nexus: Artifact upload功能。
权限管理: admin, deployment, anonymous
更高级的内容:
-------------------------------------------------------------------------
第10章后,我称之为高级篇~ 作者写的满满的都是干货。
10. 使用Maven进行测试
本章主要围绕以下插件(plugin)讲解:
Maven的重要职责之一就是自动运行单元测试,它通过maven-surefire-plugin与主流的单元测试框架JUnit3、JUnit4以及TestNG集成。(两大主流的单元测试框架: JUnit http://www.junit.org/和TestNG(Test Next Generation) http://testng.org/)
介绍测试运行器(Test Runner): maven-surefire-plugin。
surefire: sure-fire,拆开来看就很好理解,是一定会发生,一定会成功的意思。
内置绑定: 生命周期阶段需要绑定到某个插件的目标才能完成真正的工作,test阶段(phase)正是与maven-surefile-plugin的test目标相绑定了。
目标类: src/test/java/下的: Test*.java, *Test.java, *TestCase.java
跳过测试:
>mvn package -DskipTests : 跳过运行测试代码
>mvm package -Dmaven.test.skip = true : 此参数同时控制了maven-compire-plugin和maven-surefire-plugin两个插件的行为,可以同时跳过测试代码的编译和运行。
同时,maven-compire-plugin能动态指定要运行的测试用例(使用command)和包含、排除测试用例(config pom)。
测试报告: 文本格式和XML格式(JUnit)。
测试覆盖率报告: 测试覆盖率是衡量项目代码质量的一个重要的参考指标。Cobertuna是一个优秀的开源测试覆盖率统计工具(http://cobertura.sourceforge.net/),maven通过插件cobertura-maven-plugin与之集成。
介绍与TestNG的集成: TestNG较JUnit的一大优势在于它支持测试组的概念。
重用测试代码: 优秀的程序员会像对待产品代码一样细心维护测试代码。在命令行运行mvn package的时候,maven会将项目的主代码及资源文件打包,默认的打包行为是不会包含测试代码的。
配置插件maven-jar-plugin将两个目标(goal)即jar和test-jar绑定。
11. 使用Hudson进行持续集成
Subversion是是当前最流行的版本控制工具(其它的还有CVS, Git, Mercurial等),而当前优秀的持续集成工具有很多,如开源的Husson、CruiseControl,商业的Bamboo、Teamcity等。目前最流行的开源持续集成工具正是Hudson。
持续集成流程如下图所示:
介绍Hudson
官网: http://hudson-ci.org/,下载hudson.war,具体使用Hudson不作展开。
12. 使用Maven构建Web应用
以上章节讨论的打包方式为JAR,本章开始介绍使用Maven打包WAR。即: packaging = war。
需要熟悉Maven构建出来的Web目录。
POM元素finalName: 用来标识项目生成的主构件的名称。
相关插件介绍:
使用jetty-maven-plugin进行测试: 配置该插件后,并运行(mvn jetty:run),jetty-maven-plugin会启动Jetty,并且默认监听本地的8080端口,并将当前项目部署到容器中,同时它还会根据用户配置扫描代码改动。
使用Cargo实现自动化部署: Cargo是一组帮助用户操作Web容器的工具,它能够帮助用户实现自动化部署,通过插件cargo-maven2-plugin提供与Maven的集成,Maven用户可以使用该插件将Web项目部署到Web容器中。同时,Cargo也可以部署应用至远程正在运行的Web容器中。
13. 版本管理
关于版本控制的标签(Tag),使用标签就可以明确地将某个源码版本(也就是项目状态)从主干中标记出来,放到单独的位置。
自动化版本发布,Maven插件maven-release-plugin的介绍。
用来帮助提高安全性的技术——GPG(GnuPG)的介绍,及介绍插件maven-gpg-plugin。
14. 灵活的构建
本章的标题的名字起的太宽泛,主要是讲项目构建过程中常常需要面对的问题就是不同的平台环境差异,这可能是操作系统的差异、开发平台和测试平台的差异、不同客户之间的差异等。这了应对这些差异,Maven提供了属性(properties)、资源过滤(resource filter)以及profile三大特性。Maven用户可以在POM和资源文件中使用Maven属性表示那些可能变化的量,通过不同profile中的属性值和资源过滤特性为不同环境执行不同的构建。
Maven属性
Maven的属性,通过properties元素定义,属性分类(6类): 内置属性、POM属性、自定义属性、Setting属性、Java系统属性、环境变量属性。其中内置属性主要有${basedir} 表示项目根目录(pom.xml所在目录),${version} 表示项目版本。
资源过滤
插件maven-resource-plugin: 处理资源文件。
插件maven-war-plugin: 处理web项目中的web资源文件(如src/main/webapp/*.css)。
profile
根据具体的需要,可以在以下位置声明profile:
pom.xml, 用户settings.xml, 全局settings.xml, profiles.xml
介绍了激活profile的方法。
15. 生成项目站点
Maven3中使用插件maven-site-plugin生成站点,配置plugin的信息(groupId, artifactId等)后,在项目上运行mvn site就能直接生成一个最简单的站点。(由于site生命周期中的site阶段(phase)绑定到了maven-site-plugin的site目标(goal)上)。
复习: site生命周期(maven三大生命周期之一,第7章介绍),有四个阶段,分别是pre-site, site, post-site, site-deploy。
关于项目信息如(关于、持续集成、依赖、依赖管理等)在Maven3中是由插件maven-project-info-reports-plugin生成。
项目报告插件介绍: 配置在project--reporting--plugins元素下面,
自定义站点外观。
国际化。
部署站点至服务器上: 为了方便团队和用户得到必要的项目信息。使用mvn clean site-deploy命令,site-deploy目标的工作就是部署maven站点。
16. m2eclipse
官方站点: http://m2eclipse.sonatype.org/
执行maven command: console--> maven console。
通过eclipse浏览本地及远程仓库的内容,打开view: Maven Repositories。
添加依赖: 右击pom.xml,选择Maven -- Add Dependency,添加依赖。另一种方法是: m2eclipse的POM编辑器,打开pom.xml文件,有Dependencies的Tab,可以用来添加、删除、编辑依赖。
POM编辑器Tab之Dependency Hierarchy可以显示依赖层次。
POM编辑器Tab之Effective POM,可以查看项目的完整的POM信息(只读)。
下载依赖源码: 右击pom.xml -- Maven -- Download Source,为当前项目的依赖下载源码包。
17. 编写Maven插件
复习: Maven的任何行为都是由插件完成的,包括项目的清理、编译、测试以及打包等操作都有其对应的Maven的插件。每个插件拥有一个或者多个目标,用户可以直接从命令行运行这些插件目标,或者选择将目标绑定到Maven的生命周期。
插件下载: Apache, Codehaus, Googlecode, Sourceforge, Github。一般情况下不需要自己手动编写Maven插件,除非有特殊的需求。
本章介绍了编写Maven插件的步骤及案例。
18. Archetype
Archetype的意思是: 原型。在Maven里,可以使用Maven Archetype快速生成项目骨架,Archetype可以理解成Maven项目的模版。
通过插件maven-archetype-plugin来完成以上生成项目骨架的需求。
> mvn archetype: generate, 需要输入: groupId, artifactId, version, package。
常用的archetype:
高级: 编写一个Archetype。
本文是阅读笔记,包括列出了重要的资源链接。本文没有太多的实际内容,只是很宽泛的记录了关于Maven的知识库。
-------------------------------------------------------------------------
以下是我本人的书评
书是前几年就买了的,但是跟很多人一样,对于maven的学习,可能都是直接网上查下,怎么download,然后下载eclipse插件m2e,快速上手。对于Maven并没有形成系统的知识库。本书的内容涵盖入门篇、进阶篇以及高级篇,比如hello world的例子、maven插件编写、archetype编写等等。总之很全面。同时也介绍了很多maven的优秀插件。
特超所值的一本书,比起在网上搜集maven入门的资料(博客),倒不如花一天时间看《Maven实战》来学习Maven这个Java世界中的实用工具!
-------------------------------------------------------------------------
Apache Maven主页: https://maven.apache.org
书目录列表:
1. Maven简介
2. Maven的安装和配置
3. Maven使用入门
4. 背景案例
5. 坐标和依赖(Coordinate and Dependency)
6. 仓库(Repository)
7. 生命周期和插件(lifecycle and plugin)
8. 聚合与继承(aggregate and inherit)
9. 使用Nexus创建私服
10. 使用Maven进行测试
11. 使用Hudson进行持续集成
12. 使用Maven构建Web应用
13. 版本管理
14. 灵活的构建
15. 生成项目站点(site生命周期介绍)
16. m2eclipse(eclipse的插件)
17. 编写Maven插件
18. Archetype
-------------------------------------------------------------------------
1-4章为基本知识,以及利用“Hello world”入门(结合IDE)。
POM.xml,(POM:project Object Model)
settings.xml:用户目录下的:~/.m2/settings.xml
-------------------------------------------------------------------------
5-8章算是进阶章,介绍了重要的概念:坐标、依赖、仓库、生命周期、插件、聚合及继承。
构成唯一坐标的元素: groupId、artifactId、version、packaging、classifier
第5章: 依赖相关:
dependencies: dependency: groupId, artifactId, version, type, scope, optional, exclusions.
其中:
scope配置了目标依赖jar与项目classpath的关系。见下表:
Scope | compiler | test | runtime | example |
compiler | Y | Y | Y | |
test | -- | Y | -- | JUnit |
provided | Y | Y | -- | servlet-api |
runtime | -- | Y | Y | JDBC related jars |
system | Y | Y | -- | 需要指定属性systemPath |
optional: if true,依赖不会被传递,只会对当前项目有效。默认false。
exclusions: 排除特定的依赖。
附加一个properties: 定义全局变量
Useful mvn command:
> mvn dependency: list
> mvn dependency: tree
> mvn dependency: analyze
第6章: 仓库相关:
配置repositories: id, name, url, releases, snapshots
部置至远程仓库方法
介绍了镜像mirrors: id, name, url, mirrorOf
【重要】仓库搜索服务:
1. Sonatype Nexus: http://repository.sonatype.org

2. Jarvana: http://www.jarvana.com/jarvana
3. MVNbrower: http://www.mvnbroser.com
4. MVNrepository: http://mvnrepository.com

第7章: 生命周期和插件
独立的生命周期: clean、default(核心)、site
每个生命周期过都包含了好多个阶段(phase)
具体戳: http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
Maven的核心仅仅定义了抽象的生命周期,具体的任务是交由插件完成的,插件以独立的构件形式存在。
plugin: 插件绑定、自定义绑定等。
在线插件信息: http://maven.apache.org/plugins/index.html
插件仓库
第8章: 聚合和继承
packaging = pom
聚合的核心配置: modules
继承:
parent: groupId, artifactId, version, relativePath
可继承的POM元素列表(几十个): groupId, version, dependencies... 等。
在父pom中使用dependencyManagement声明依赖的版本(version),起到统一管理version的作用,从而降低依赖冲突。
scope = import,导入目标pom并合并到当前dependencyManagement中。
插件管理元素: pluginManagement
- 聚合: 目的是为了方便快速构建项目。
- 继承: 目的是为了消除重复配置。
Maven的核心设计理念: 约定优于配置(conversion over configuration)。
反应堆(reactor): 指所有模块组成的一个构建结构。
构建顺序: 模块间的依赖关系是有向非循环的。
操作反应堆的命令行: -am, -amd -also-make-dependents, -pl, --projects <arg>, -rf -resume-from <arg>
-------------------------------------------------------------------------
第9章是关于创建私服的,当前市场上主要有三种管理私服的工具:
- Apache - Archiva
- JFrog - Artifactory
- Sonatype - Nexus
Nexus ['neksəs],是连接的意思。下载页面: http://nexus.sonatype.org/downloads/
安装方式(Nexus是java web app):
- Bundle方式安装Nexus
- WAR方式安装Nexus
Login: admin/admin123
Type:
- Hosted Repository(宿主仓库): Id, Name
- Proxy Repository(代理仓库): Remote Storage Location
- Repository Group(仓库组)
提供搜索Maven中央库的功能。
配置Maven: setting.xml: 定义<profile>, 激活<activeProfile>
创建一个匹配任何仓库的镜像: 使Maven下所有的下载都通过Nexus:mirrorOf = *
部置构件至Nexus: Artifact upload功能。
权限管理: admin, deployment, anonymous
更高级的内容:
- 为项目分配独立的仓库
- 调度任务
-------------------------------------------------------------------------
第10章后,我称之为高级篇~ 作者写的满满的都是干货。
10. 使用Maven进行测试
本章主要围绕以下插件(plugin)讲解:
- maven-surefire-plugin(内置插件)
- cobertura-maven-plugin(测试覆盖率插件)
- maven-jar-plugin(将test代码打包)
Maven的重要职责之一就是自动运行单元测试,它通过maven-surefire-plugin与主流的单元测试框架JUnit3、JUnit4以及TestNG集成。(两大主流的单元测试框架: JUnit http://www.junit.org/和TestNG(Test Next Generation) http://testng.org/)
介绍测试运行器(Test Runner): maven-surefire-plugin。
surefire: sure-fire,拆开来看就很好理解,是一定会发生,一定会成功的意思。
内置绑定: 生命周期阶段需要绑定到某个插件的目标才能完成真正的工作,test阶段(phase)正是与maven-surefile-plugin的test目标相绑定了。
目标类: src/test/java/下的: Test*.java, *Test.java, *TestCase.java
跳过测试:
>mvn package -DskipTests : 跳过运行测试代码
>mvm package -Dmaven.test.skip = true : 此参数同时控制了maven-compire-plugin和maven-surefire-plugin两个插件的行为,可以同时跳过测试代码的编译和运行。
同时,maven-compire-plugin能动态指定要运行的测试用例(使用command)和包含、排除测试用例(config pom)。
测试报告: 文本格式和XML格式(JUnit)。
测试覆盖率报告: 测试覆盖率是衡量项目代码质量的一个重要的参考指标。Cobertuna是一个优秀的开源测试覆盖率统计工具(http://cobertura.sourceforge.net/),maven通过插件cobertura-maven-plugin与之集成。
介绍与TestNG的集成: TestNG较JUnit的一大优势在于它支持测试组的概念。
重用测试代码: 优秀的程序员会像对待产品代码一样细心维护测试代码。在命令行运行mvn package的时候,maven会将项目的主代码及资源文件打包,默认的打包行为是不会包含测试代码的。
配置插件maven-jar-plugin将两个目标(goal)即jar和test-jar绑定。
11. 使用Hudson进行持续集成
Subversion是是当前最流行的版本控制工具(其它的还有CVS, Git, Mercurial等),而当前优秀的持续集成工具有很多,如开源的Husson、CruiseControl,商业的Bamboo、Teamcity等。目前最流行的开源持续集成工具正是Hudson。
持续集成流程如下图所示:

介绍Hudson
官网: http://hudson-ci.org/,下载hudson.war,具体使用Hudson不作展开。
12. 使用Maven构建Web应用
以上章节讨论的打包方式为JAR,本章开始介绍使用Maven打包WAR。即: packaging = war。
需要熟悉Maven构建出来的Web目录。
POM元素finalName: 用来标识项目生成的主构件的名称。
相关插件介绍:
使用jetty-maven-plugin进行测试: 配置该插件后,并运行(mvn jetty:run),jetty-maven-plugin会启动Jetty,并且默认监听本地的8080端口,并将当前项目部署到容器中,同时它还会根据用户配置扫描代码改动。
使用Cargo实现自动化部署: Cargo是一组帮助用户操作Web容器的工具,它能够帮助用户实现自动化部署,通过插件cargo-maven2-plugin提供与Maven的集成,Maven用户可以使用该插件将Web项目部署到Web容器中。同时,Cargo也可以部署应用至远程正在运行的Web容器中。
13. 版本管理
- 版本管理(Version Management): 项目整体版本的演变过程管理,如1.0-SNAPSHOT到1.0,再到1.1-SNAPSHOT。
- 版本控制(Version Control): 是指借助版本控制工具(如Subversion)追踪代码的每一个变更。
关于版本控制的标签(Tag),使用标签就可以明确地将某个源码版本(也就是项目状态)从主干中标记出来,放到单独的位置。
自动化版本发布,Maven插件maven-release-plugin的介绍。
用来帮助提高安全性的技术——GPG(GnuPG)的介绍,及介绍插件maven-gpg-plugin。
14. 灵活的构建
本章的标题的名字起的太宽泛,主要是讲项目构建过程中常常需要面对的问题就是不同的平台环境差异,这可能是操作系统的差异、开发平台和测试平台的差异、不同客户之间的差异等。这了应对这些差异,Maven提供了属性(properties)、资源过滤(resource filter)以及profile三大特性。Maven用户可以在POM和资源文件中使用Maven属性表示那些可能变化的量,通过不同profile中的属性值和资源过滤特性为不同环境执行不同的构建。
Maven属性
Maven的属性,通过properties元素定义,属性分类(6类): 内置属性、POM属性、自定义属性、Setting属性、Java系统属性、环境变量属性。其中内置属性主要有${basedir} 表示项目根目录(pom.xml所在目录),${version} 表示项目版本。
资源过滤
插件maven-resource-plugin: 处理资源文件。
插件maven-war-plugin: 处理web项目中的web资源文件(如src/main/webapp/*.css)。
profile
根据具体的需要,可以在以下位置声明profile:
pom.xml, 用户settings.xml, 全局settings.xml, profiles.xml
介绍了激活profile的方法。
15. 生成项目站点
Maven3中使用插件maven-site-plugin生成站点,配置plugin的信息(groupId, artifactId等)后,在项目上运行mvn site就能直接生成一个最简单的站点。(由于site生命周期中的site阶段(phase)绑定到了maven-site-plugin的site目标(goal)上)。
复习: site生命周期(maven三大生命周期之一,第7章介绍),有四个阶段,分别是pre-site, site, post-site, site-deploy。
关于项目信息如(关于、持续集成、依赖、依赖管理等)在Maven3中是由插件maven-project-info-reports-plugin生成。
项目报告插件介绍: 配置在project--reporting--plugins元素下面,
- 插件maven-javadoc-plugin,使用JDK的javadoc工具生成javaDoc文档。
- 插件maven-jxr-plugin会以Web页面的形式将Java源代码展现出来。
- 插件maven-checksyle-plugin,使用CheckStyle工具来帮助Java开发人员遵循编码规[*]范,能根据一套规则自动检查Java代码,使得团队能够方便地定义自己的编码规范。
- 插件maven-pmd-plugin,使用PMD工具分析Java源代码,寻找代码中的问题,包括潜在的bug、可优化代码、重复代码以及过于复杂的表达式。
- 插件maven-changelog-plugin能够基于版本控制系统中就近的变更记录生成三份变更报告。
- 插件cobertura-maven-plugin生成测试覆盖率报告(前面介绍过)。
自定义站点外观。
国际化。
部署站点至服务器上: 为了方便团队和用户得到必要的项目信息。使用mvn clean site-deploy命令,site-deploy目标的工作就是部署maven站点。
16. m2eclipse
官方站点: http://m2eclipse.sonatype.org/
执行maven command: console--> maven console。
通过eclipse浏览本地及远程仓库的内容,打开view: Maven Repositories。
添加依赖: 右击pom.xml,选择Maven -- Add Dependency,添加依赖。另一种方法是: m2eclipse的POM编辑器,打开pom.xml文件,有Dependencies的Tab,可以用来添加、删除、编辑依赖。
POM编辑器Tab之Dependency Hierarchy可以显示依赖层次。
POM编辑器Tab之Effective POM,可以查看项目的完整的POM信息(只读)。
下载依赖源码: 右击pom.xml -- Maven -- Download Source,为当前项目的依赖下载源码包。
17. 编写Maven插件
复习: Maven的任何行为都是由插件完成的,包括项目的清理、编译、测试以及打包等操作都有其对应的Maven的插件。每个插件拥有一个或者多个目标,用户可以直接从命令行运行这些插件目标,或者选择将目标绑定到Maven的生命周期。
插件下载: Apache, Codehaus, Googlecode, Sourceforge, Github。一般情况下不需要自己手动编写Maven插件,除非有特殊的需求。
本章介绍了编写Maven插件的步骤及案例。
18. Archetype
Archetype的意思是: 原型。在Maven里,可以使用Maven Archetype快速生成项目骨架,Archetype可以理解成Maven项目的模版。
通过插件maven-archetype-plugin来完成以上生成项目骨架的需求。
> mvn archetype: generate, 需要输入: groupId, artifactId, version, package。
常用的archetype:
- maven-archetype-quickstart: 最常用的Archetype。
- maven-archetype-webapp: 生成最简单的Maven war项目模版。
高级: 编写一个Archetype。
发表评论
-
【总结】Java日志类工具整理
2017-09-25 21:01 748关于Java日志的总结,知 ... -
《软技能——代码之外的生存指南》阅读整理
2017-03-09 23:10 1216本书的原版叫《Soft Skill ... -
吴军《数学之美》第二版阅读整理
2017-03-07 22:34 7186吴军的《数学之美》第一版于2012年出版,并获得国家图书馆第八 ... -
O'Reilly出版《微服务设计》阅读整理
2017-02-26 16:49 1794《微服务设计》原版是O'Reilly Media, Inc在2 ... -
【总结】Hazelcast之Distributed Map介绍(续)
2016-12-22 21:49 0目录: 1. Distributed Map ... -
【总结】Hazelcast之Distributed Map介绍
2016-12-19 22:21 2763通过Hazelcast入门简介(http://angelbil ... -
【总结】Matlab调用Java代码
2016-11-07 22:46 2540Matlab调用Java代码,这个比较简单,步骤如下: 1. ... -
【总结】Spring LDAP整理
2016-08-29 21:53 11761如果要总结Spring的LDAP(Spring开发的操作LDA ... -
【总结】Quartz整理
2016-08-28 14:00 1459官网:http://www.quartz-schedule ... -
【总结】Java基础之String
2016-03-26 15:46 0总结关于String的问题和特点。 1、contains() ... -
【总结】java.util.Date vs. java.sql.Date
2016-03-19 21:06 1747本文总结了java.util.Date和java.sql.Da ... -
【总结】Java基础之Set:HashSet vs. LinkedHashSet vs. TreeSet
2016-02-28 17:24 1775总结平时常用的Collection子接口:Set接口以及其实现 ... -
【总结】Java基础之List:ArrayList vs. LinkedList vs. Vector
2016-02-27 17:41 926总结平时常用的Collection ... -
【总结】Java基础之Map:HashMap vs. LinkedHashMap vs. TreeMap vs. ConcurrentHashMap
2016-02-21 18:17 2413Map是Java最常用的集合类之一。它有很多实现类,我总结了几 ... -
【总结】正则表达式
2016-01-09 15:13 854正则表达式(Regular Expre ... -
【总结】Redis Vs Hazelcast
2015-11-04 22:36 0Redis官网:http://redis.io ----- ... -
【总结】servlet mapping url 配置中的 / 和 /* 的区别
2015-03-28 16:48 1973web.xml的配置中,关于<url-pattern&g ... -
【总结】<context:annotation-config> vs <context:component-scan>
2015-03-25 22:35 1155Spring mvc3中的<context:annota ... -
【总结】Session监听类HttpSessionListener介绍及在listener里取得request
2014-12-15 22:53 5430servlet-api.jar中提供了监 ... -
【总结】代码重构示例(陆续更新)
2014-11-20 22:44 0rqwerqwsdfdsfsdfasdf
相关推荐
在日常的开发和使用中,我们经常需要借助各种小工具来提高工作效率,例如快速启动常用的应用程序、管理文件等。一个简单但功能强大的集成工具箱可以帮助用户快速访问、启动并管理程序。今天,我们将以Python为基础,结合Tkinter和Win32API,开发一个类似Windows快捷方式的工具箱应用,能够让你轻松集成各种常用程序并一键启动
django自建博客app
《基于YOLOv8的智慧校园实验室高压灭菌锅安全联锁系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
用于hifi测序数据的基因组组装程序
Microsoft Access 2010 数据库引擎可再发行程序包AccessDatabaseEngine-X64解压后的文件AceRedist
从大模型、智能体到复杂AI应用系统的构建——以产业大脑为例
自然语言处理之TF-IDF算法与TextRank算法的缠绵_textrank,tf-idf和两者的组合-CSDN博客.html
内容概要:2023版《科学智能 (AI4S)全球发展观察与展望》阐述了AI for Science(AI4S)在全球范围内的最新进展及其对科学和工业的深远影响。文章首先回顾了AI4S在过去一年中的快速发展,特别是在药物研发、材料科学、地质学、污染治理等多个领域的应用实例。AI4S通过结合深度学习、机器学习和其他AI技术,加速了从基础研究到实际应用的转化过程。例如,在药物研发中,AI4S帮助科学家克服了“反摩尔定律”的挑战,提高了新药研发的成功率;在材料科学中,AI4S实现了复杂材料的高效模拟,如人造钻石、石墨烯、碳纳米管等;在地质学中,AI4S通过模拟地球内部结构和物理过程,为地震学研究提供了新视角。此外,文章还探讨了大语言模型(LLMs)与科学方法的结合,指出LLMs不仅能辅助科学研究,还能生成新的科学假设并进行逻辑推理。 适合人群:具备一定科研背景或对AI技术感兴趣的科研人员、工程师、政策制定者及高校师生。
这个数据集包含了日常步数统计、睡眠时长、活跃分钟数以及消耗的卡路里,是个人健康与健身追踪的一部分。 该数据集非常适合用于以下实践: 数据清洗:现实世界中的数据往往包含缺失值、异常值或不一致之处。例如,某些天的步数可能缺失,或者存在不切实际的数值(如10,000小时的睡眠或负数的卡路里消耗)。通过处理这些问题,可以学习如何清理和准备数据进行分析。 探索性分析(发现日常习惯中的模式):可以通过分析找出日常生活中的模式和趋势,比如一周中哪一天人们通常走得最多,或是睡眠时间与活跃程度之间的关系等。 构建可视化图表(步数趋势、睡眠与活动对比图):将数据转换成易于理解的图形形式,有助于更直观地看出数据的趋势和关联。例如,绘制步数随时间变化的趋势图,或是比较睡眠时间和活动量之间的关系图。 数据叙事(将个人风格的追踪转化为可操作的见解):通过讲述故事的方式,把从数据中得到的洞察变成具体的行动建议。例如,根据某人特定时间段内的活动水平和睡眠质量,提供改善健康状况的具体建议。
框架结构天城商业办公楼5200平米(建筑图 结构图 计算书 开题报告 任务书 文献翻.zip
柴油机连杆加工工艺及夹具设计.zip
读书网首页的HTML信息
文字渐变颜色代码生成器:让文字绽放多彩魅力,演示:在信息交流日益丰富的今天,个性化的文字展示成为吸引目光的关键。这款文字渐变颜色代码生成器,便是为满足这一需求而生的绿色软件,无需安装,便捷实用。 它的操作极为简便。用户只需在软件界面中输入想要转换的文字内容,接着从丰富的色彩选项里挑选心仪的起始颜色与结束颜色,随后轻轻按下 “转换按钮”,神奇的事情就此发生 —— 适用于论坛、网页、QQ 空间等多种平台,以及自定义格式的渐变颜色代码便会即刻生成。不仅如此,生成的代码还能自动复制到剪切板,极大地节省了用户手动复制的时间。当你在论坛回帖、更新网页内容或是装扮 QQ 空间时,只需轻松粘贴代码,原本单调的文字瞬间就能拥有绚丽的渐变色彩,瞬间脱颖而出,为你的表达增添独特魅力,让文字不再平凡,轻松成为视觉焦点。 一款可以轻松把一段文字生成渐变颜色代码的绿色软件,当你在软件中输入完要转换的文字后,只需要挑选自己喜欢的起始颜色、结束颜色后,按一下―转换按钮即可生成相应的论坛/网页/QQ空间以及自定义格式代码,并且代码可以自动复制到剪切板中,回帖时直接粘贴代码即可不错得文字代码生成器,让你得文字更加漂亮.
1.【锂电池剩余寿命预测】Transformer锂电池剩余寿命预测(Matlab完整源码和数据) 2.数据集:NASA数据集,已经处理好,B0005电池训练、B0006测试; 3.环境准备:Matlab2023b,可读性强; 4.模型描述:Transformer在各种各样的问题上表现非常出色,现在被广泛使用。 5.领域描述:近年来,随着锂离子电池的能量密度、功率密度逐渐提升,其安全性能与剩余使用寿命预测变得愈发重要。本代码实现了Transformer在该领域的应用。 6.作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
Android项目原生java语言课程设计,包含LW+ppt
配套文章:https://blog.csdn.net/gust2013/article/details/146909670?spm=1001.2014.3001.5502
《基于YOLOv8的智慧社区儿童游乐设施安全监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计