- 疑难部分
- mvn clean 只是删除工程目录下的某些所谓的"生成结果"但具体是什么东西,我到现在还没搞清楚,反正他不会去你本地二房库删除jar包就是了,想删除本地二房库里jar包只能通过install覆盖或者手动删除.
- 一定要在.m2仓库下放置setting.xml文件 B2B的setting.xml文件在此http://b2b-doc.alibaba-inc.com/download/attachments/77924054/settings.xml
- maven工程的M2_REPO未绑定错误解决
- maven
mvn -Denv=release 这里说明下env是在deploy/pom.xml中的配置项当他不等于release时会执行autoconfig导入antx.property中的变量。而测试用的RPM包是希望可以手动配置antx.property文件的。
mvn -DuserProp= 这样可以手动指定配置文件
mvn -pl 可以指定只编译打包某些子工程,例如 -pl web/showwindow,bundle/war (以逗号间隔,止于为什么是/呢,原因是为了找到那个目录下的pom.xml文件,明白吗?不明白就来问我哦~)- Project
任何您想build的事物,Maven都可以认为它们是工程。这些工程被定义为工程对象模型(POM,Poject Object Model)。一个工程可以依赖其它的工程;一个工程也可以由多个子工程构成 - POM:
POM(pom.xml)是Maven的核心文件,它是指示Maven如何工作的元数据文件,类似于Ant中的build.xml文件。POM文件位于每个工程的根目录中。 - GroupId:
groupId是一个工程的在全局中唯一的标识符,一般地,它就是工程名。groupId有利于使用一个完全的包名,将一个工程从其它有类似名称的工程里区别出来。 - Artifact:
artifact是工程将要产生或需要使用的文件,它可以是jar文件,源文件,二进制文件,war文件,甚至是pom文件。每个artifact都由 groupId和artifactId组合的标识符唯一识别。需要被使用(依赖)的artifact都要放在仓库(见Repository)中,否则 Maven无法找到(识别)它们。 - Dependency:
为了能够build或运行,一个典型的Java工程会依赖其它的包。在Maven中,这些被依赖的包就被称为dependency。dependency一般是其它工程的artifact。 - Plug-in:
Maven提供了强大的插件扩展功能,的每一个功能都是由插件提供的。插件提供goal(类似于Ant中的target),并根据在POM中找到的元数据去完成工作。Maven插件大部分是由Java写成的,但它也支持用Beanshell或Ant脚本写成的插件。 - Repository
仓库用于存放artifact,它可以是本地仓库,也可以是远程仓库。
B2B公共仓库: http://repo.alibaba-inc.com/mvn/
BU私有仓库
Maven有一个默认的远程仓库: http://repo1.maven.org/maven2/
在Windows平台上,本地仓库的默认地址是User_Home\.m2\repository。 - SNAPSHOT
工程中可以(也应该)有一个特殊版本,它的版本号包括SNAPSHOT字样。该版本可以告诉Maven,该工程正处于开发阶段,会经常更新(但还未发 布)。当其它工程使用此类型版本的artifact时,Maven会在仓库中寻找该artifact的最新版本,并自动下载、使用该最新版。 - 内网文档:http://b2b-doc.alibaba-inc.com/display/opentech/Maven
- Maven官方文档:http://maven.apache.org/users/index.html
- Maven权威指南 http://www.sonatype.com/books/maven-book/reference_zh/public-book.html
- Project
- mvnDebug
方式1:set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
方式2:mvndebug或mvnDebug,在windows命令行下大小写不敏感
在maven上debug,经常跟jetty或tomcat插件在一起使用。如运行mvnDebug jetty:run命令后再通过eclipse远程连接调试。
maven的安装目录下存在mvnDebug.bat文件,打开可以看到具体的配置项如下:
Java代码
set MAVEN_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
这里对几个参数进行说明:
-Xdebug : 启动debug模式
-Xnoagent: 禁用默认sun.tools.debug调试器
-Djava.compiler:指定编译器类型,可方便优化 jitc jitc_de等
-Xrunjdwp:启动调试协议JDWP,全称是Java Debug Wire Protocol,它定义了JPDA front-end和JPDA back-end之间通讯信息的二进制格式。这里的通讯信息主要包括两种:调试器发送给JVM的请求信息和JVM发送给调试器的调试信息。有如下子项:
-transport:JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。
-server:y/n 该jvm是被调试者还是调试器
-suspend:y/n 是否等待外部调试器的连接,如jetty启动时候,是否等待eclipse的远程连接后在进行jetty的初始化工作。在调试web容器的时候用的很多
-address:监听端口