以前都没有写过博客,今年毕业,跟同学做个微信商城,同学叫我写个博客总结总结,我觉得还是有必要的。
开始
文章概述:
文章讲解maven,git的搭配,两个都是项目管理工具,为什么要搭配在一起,为什么git项目在小型项目中没有svn使用方便,svn在大型项目中拖慢开发速度。
Maven
我们都了解maven是对java的jar包进行管理的工具,
我比较喜欢把项目的Entity跟common的工具包打包成jar包,上传到maven的nexus(私)服务器,maven服务器分为两个,一个就是我们自己配置的私服nexus等,还有就是远程服务器(外网上面)的,比如阿里云,maven自己有默认的远程仓库。远程服务器跟私服功能上面没有区别,只是看我们有没有权限。我们换个角度,如果你是阿里云里面的员工,有阿里云私服的账号跟上传jar包权限,这不就是自己公司里面的私服了吗。这儿我给个maven解压后文件简单setting代码
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--这个是你设置本地仓库的路径,从远程仓库或者从私服上下载下来的jar包等会存放在这个路径下,所有使用该maven的maven项目都共同使用这个里面的jar包。-->
<localRepository>D:/Maven/repository</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<!--这个是给你的私服用的,是你在maven项目pom文件上distributionManagement标签上指定的用来多打jar包提交的。提交需要用户名密码的,maven就指定用下面的账号-->
<server>
<id>releases</id> <!--release 版本使用账户,id跟pom上面的id要对应-->
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id> <!--snapshots使用的账户,id跟pom上面的id要对应,
如果pom文件id不对应,mvn发布会失败,也就是maven生命周期最后的那个操作-->
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<!--远程镜像族,我设置的是第一个阿里云,第二个是我的私有仓库,第三个是maven默认的远程仓库,如果本地仓库没有jar包,
jar包下载它会先找阿里云中下载(第一个原因:访问速度快而且大多数都不是用自己打的jar包),如果阿里云上面没有就会找我的私有仓库,两者都没有最后看国外的maven仓库(访问慢但是全),-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>my-3rd</id>
<mirrorOf>My-repository</mirrorOf>
<name>我的仓库</name>
<!--我用的局域网IP地址,呵呵,不敢放自己服务器ip地址呀-->
<url>http://192.168.151.1:8081/nexus/content/groups/BiYeSeJi/</url>
</mirror>
<mirror>
<id>mvnrepository</id>
<mirrorOf>mvn</mirrorOf>
<name>mvn仓库</name>
<url>http://www.mvnsearch.org/maven2</url>
</mirror>
</mirrors>
<profiles>
<!--因为我上面配置了mirror,多以这个配置里面repository的id跟url无效。但这个配置必须要,我需要<releases>跟<snapshots>标签里面的内容。
如果你了解maven,会发现其实我下面配置重复了,id为My-repository其实没有必要,可以上吊,url设置多少你随意。-->
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>central</id>
<url>http://nexus-releases</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
<repository>
<id>My-repository</id>
<url>http://My-repository</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://nexus-releases</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>My-repository</id>
<url>http://My-repository</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--上面profile可以配置多个,但是激活的只有一个-->
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
最近使用maven搭建项目,在pom.xml文件中没有配置过里面的内容详情查看,就是因为这个,我打的jar包只有字节码文件,也不能打resource包,我自己本我朋友想用太困难,因为class字节码里面没有注释。我们要注释就需要resource包,自己工具指定resource路径,或者你像我现在
<resources>
<resource>
<directory>src/main/java</directory>
</resource>
</resources>
这样配置,你试试解压这个jar包,一个类有两个文件,一个是.class字节码文件,一个是java文件,java文件可以有注释了吧,通过工具手动指定就行了,不过我不建议你这样玩,还是通过上面的博客打resource包好。
Git和SVN
git、svn和maven的比较:git是项目管理工具,svn也是项目管理工具,git跟svn设计作用类似,他们两个跟Maven区别就很大了,他们两个是管理项目(其中很多文件,是文件夹),Maven只针对jar包,jar包是压缩文件,可以轻松共享。
git跟svn之间比较:git繁琐,至少学习成本比svn高,但是功能强大;svn原理简单,锁让人等的很烦,不用锁开发人数过多的情况下,并且不使用其它工具提供冲突解决方案,每天很多时间用来解决冲突去了。svn差别其实在开发人员比较少,团队管理和项目管理没有太规范的情况下是优于git管理项目。但是,当团队项目迭代较快,项目穿插(各个模块时间不平衡,比如,测试和开发时间不同步的团队)较多的情况,svn就有点坑了,虽然可以建立分支,但是,没有像git本地保存功能总会让人手忙脚乱。
我在第一个上班的公司就是使用svn管理项目的,公司这个团队的人不多,就几个人,但是公司项目管理一团乱,需求各种更新,还有同时测试,我还要同时往后面完成需求,我一次要维护几个版本,虽然用了IDEA工具减轻了负担,心中还是十万个马在奔腾。针对这种情况,使用git,我可以直接在本地建立分支,在不同分支之间切换,这是多爽,而svn,我没有服务器分支权限,只能哭着用IDEA历史进行比较,用完后再还原。
现在的公司使用的git[2019]使用的git来管理项目的。整体的对比svn来说我很喜欢git的方式,因为git只需要功能做完后合并,每个分支就像功能模块一样,这是非常爽的。像git -stash和变基,都是为本地考虑的功能。
本人表达能力有限,不喜勿喷。