Maven

  1. 子工程将会集成父工程的对于部署到私服的配置;所以只需要在父工程的pom配置即可;今天调试了半天deploy失败,是因为distributeManagement仅是在hello-world中配置,parent工程没有配置;
  2. 如果先要把工程发布为relase版本,只要把各个项目的配置文件version修改为去掉"SNAPSHOTS"版本即可;如果parent/aggregate工程没有设定distributeManagement相关内容deploy将会出错,及时子工程配置了distributeManagement信息;
  3. 为了项目创建独立的repository,之后还要分配权限,首先是创建操作,在privilegeadd一项,选择已经创建的repositorytarget选择maven2,这个将会创建该repositorymaven仓库的操作;其实target还有很多其他类型,在repository target中你可以看到,里面有maven1仓库操作权限,nuget仓库操作全下,我们是基于maven2,所以选择的是maven2all)类型,还有一种是maven2but source),指的是对除了资源文件之外的元素的操作;
  4. maven测试的插件叫:maven-surefire-plugin;这个插件的约定是:
    1
    src/test/java/下面;
    2
    )类命名为Test*.java或者*Test.java*TestCase.java
  5. 如果想要跳过测试,package命令:mvn package -DskipTests
  6. Jekinsnexus一样,都是内置了Jetty,不需要额外部署到tomcat中;直接在命令行中键入:java -jar jekins即可实现部署,默认端口是8080,打开浏览器,敲入localhost:8080即可;
  7. eclipse就是一个插件容器,比如svn其实是需要你安装svn插件(site)才可以的;Eclipse工程上传到svn上面,视图切换到svn资源库研究,右键svn资源库的空白区域,新建,指定svn上传路径;然后回到Java视图,选中所有的要上传的工程,右键->Team->Share,逐个share列表中的项目即可;
  8. Maven里面,POM配置relase以及snapshot版本部署到对应的server路径,在mavensettings文件中配置对应部署服务器登录的信息;pom不负责权限,只是负责功能的配置,至于访问机器的用户名密码,配置文件路径在哪里这些都是交给settings文件,换言之,pom只是负责项目相关的信息(POM,是project object model的缩写),和项目么有间接关系的都放在settings文件中定义;
  9. mvn clean deploy失败,后来发现是因为relase库在nexus中配置为disable redeploy,导致重复版本无法上传到nexus中,但是JekinsCI需要重复执行部署任务;修改配置为allow redeploy,问题解决;但是有一个问题需要考虑是否需要重复提交到nexus,其实CI只要能够保证package通过就可以了,更多的时候是不需要install的;所以nexus即使配置为disable也是有道理的;后来我把build的命令修改为clean install
  10. 在配置Jekins的时候,邮件发送总是不对,后来通过网调才发现,原来是因为在配置的上面有一个管理员邮件,一定要和你配置的smtp的用户名,密码配上才可以;
  11. 在配置Jenkins的时候注意,其中单个项目配置有一个是POM文件路径,如果有parent/aggregate工程,需要给出相对路径,对于helloworld项目而言,它的填写内容为parent-proj/pom.xml;因为Jenkins实际上和maven关联很大,所以需要部署jenkins的机器也要安装maven,因为配置jenkins的时候需要制定maven的路径,让jenkins可以调用maven组件进行编译,测试,打包,部署,同事还要为jenkins配置svn,让jenkins可以下载到最新的代码,来让maven插件来对代码指定命令操作,jenkins本身其实也是一个"倒爷"的感觉,他所做的很多事情其实都是依赖于其他的组件;
  12. Maven的私服其实本质是maven客户端都连接到私服Nexus上面指定的虚拟仓库(virtial repository),虚拟仓库中包含了中央仓库以及其他远程仓库,然后,maven的请求的组件如果已经被缓存到了私服仓库,直接取用,如果不存在,则需要私服连接到远程服务器进行下载,然后传递给maven客户端;在私服的页面搜索的也是本地缓存,如果又将会返回,如果没有,检索不出来,它并不会检索远程仓库;
  13. 只要在pom文件中声明一个构建,maven将会自动和私服取得联系,下载到本地仓库(.m2/repository)
  14. nexus windows安装版本命令行 nexus install,不需要加短横线之类的,直接敲命令;
  15. maven执行命令其实应该是plugin-prefix:goal,比如maven-resources-plugin阶段的resources(将main资源文件复制到输出目录,对应的还有testResource目标),命令应该是mvn resources:resources;类似于compile这类的没有歧义的命令可以不需要带前缀,但是对于一些非常用的命令可能需要;如果eclipse因为没有探测到配置文件变化而没有复制,想要强制编译复制配置文件(资源文件),那么就可以在命令行敲一下这个命令;
  16. maveneclipse插件超智能,我在嵌入一个plugin的时候,artifactId写错了都被识别出来了;
  17. maven默认的资源文件是src/main(test/resourcs,注意是resources是复数形式;这样每次编译都回到target下面判断是否需要拷贝资源文件;之前使用了resource做包名,导致只有文件本身变化了才会拷贝;
  18. maven的生命周期以及插件绑定,maven主程序定义好了各个生命阶段,clean-defaultresource复制,编译,测试,打包,部署到本地以及远程仓库)-site(专门针对网站),各个阶段的任务则是由maven的插件来实现的,各个阶段插件的配置在超级POM中已经设定(可以通过EcliopseEffective POM中看到),你可以修改和重写在自己项目的POM中;各个阶段任务被称为目标(goal);一个插件可能会有多个目标,可以通过""进行指定;比如上面提到的resources插件,再比如depandency插件有listtree以及analyze目标;所以在代码实现上,是公开的方法,在maven生命周期角度来看是目标;
  19. Eclipse本身是一个平台,通过插件形式完成功能;同样的,对于preference中的配置内容也都是各个插件的结果,比如安装了maven插件后就会出现Maven的菜单项,同样的配置信息也是分散在各个插件中的配置文件,在.meta/.plugins中搜索.xml,可以看到很多xml文件,还有很多插件是以其他文件格式存储配置项;所以preference中的配置内容不是保存在一个文件里面,而是分散的保存在各个插件的配置文件中;
  20. 修改完了pom完之后,如果想要让eclipse下载pom中新建或者修改的的jar包,可以右键工程,mavenupdate project
  21. eclipse中指定的maveninstallation是为了指定bin文件夹,里面的各种maven命令将从这里找到并执行,相当于命令行执行的指定环境变量(设定M2_HOME以及添加到PATH),在User Settings中指定配置文件则是为了指定配置文件路径;一定要手动进行指定,不要使用默认项,因为如果eclipse之前使用过maven,配置文件是其他,默认的路径也是.m2/settings.xml,但是却可能使用的是缓存的配置文件;
  22. eclipse中指定的maveninstallation是为了指定bin文件夹,里面的各种maven命令将从这里找到并执行,相当于命令行执行的指定环境变量(设定M2_HOME以及添加到PATH),在User Settings中指定配置文件则是为了指定配置文件路径;一定要手动进行指定,不要使用默认项,因为如果eclipse之前使用过maven,配置文件是其他,默认的路径也是.m2/settings.xml,但是却可能使用的是缓存的配置文件;
  23. POM里面的三大基本部分:坐标(groupIdartifactIdversion),依赖,构建信息(pluginssourceDirectory...;
  24. 在命令行窗口执行mvn clean install,却被安装到了e:\sipo...下面,原来命令行的mvn是环境变量中MAVN_HOMEbat文件,取用的也是该目录下的settings.xml文件,所以会如此;

你可能感兴趣的:(Maven)