zoukankan      html  css  js  c++  java
  • Maven的安装与使用

    1、maven下载 地址:http://maven.apache.org/download.cgi

    2、解压并配置settings.xml文件

    3、Eclipse配置

    4、访问中央仓库地址:https://mvnrepository.com

    5.新建Maven项目

    点击【next】

     

    选maven-archetype-quickstart后,next

     

    小插曲: 原址:https://www.cnblogs.com/LinkinPark/p/5232995.html

    Archetype,骨架的意思。

    Archetype是什么?

    简单的说,Archetype是Maven工程的模板工具包。一个Archetype定义了要做的相同类型事情的初始样式或模型。这个名称给我们提供来了一个一致的生成Maven工程的方式。Archetype会帮助作者给用户创建Maven工程模板,并给用户提供生成相关工程模板版本的参数化方法。

    使用Archetype提供的好的方法,是开发者能够使用最佳实践来快速的构建和组织一致化的工程。在Maven工程中,我们努力使用Archetype来尽可能快的给用户提供示例工程,同时也会把Maven的最佳实践介绍给新的用户。一个新的用户可以使用工作中的Maven工作作为跳板来研究更过的Maven中功能。我们也可以使用Archetype的添加机制,这样就意味着允许我们抓取Archetype中项目片段,并把它们添加到既存的工程中。Maven网站的Archetype就是很好的例子。例如,你可以使用“quick start archetype”来生成一个工程,然后就可以通过其中既存的“site archetype”来快速的创建一个网址工程。你能够使用Archetype来做很多这样的事情。

    在你的团队中可能想要标准化的J2EE开发,这需要你提供EJBs、或者是WARs、或者是Web services的原型。一旦在你团队资源库中创建和部署这些原型,它们就可以在你团队内共享使用。

    如何使用Archetype

    要基于Archetype来创建一个新的工程,需要像下面示例这样来调用:

    mvn archetype:generate

    已有的Archetypes

    Archetype ID

    说明

    maven-archetype-archetype

    一个样例原型

    maven-archetype-j2ee-simple

    简单的J2EE应用程序样例

    maven-archetype-mojo

    Maven插件样本的示例

    maven-archetype-plugin

    Maven插件样本

    maven-archetype-plugin-site

    Mave插件网站的样例

    maven-archetype-portlet

    JSR-268门户样例

    maven-archetype-quickstart

    Maven工程样例

    maven-archetype-simple

    一个简单的Maven工程

    maven-archetype-site

    Maven网站的样例,它演示了对诸如APT、XDoc和FML等文档类型的支持,并演示了如果把网站国际化(i18n)

    maven-archetype-site-simple

    Maven网站样例

    maven-archetype-webapp

    Maven的Webapp工程样例

    • 常用Archetype

    1. maven-archetype-quickstart
    默认的Archetype,基本内容包括:
    一个包含junit依赖声明的pom.xml
    src/main/java主代码目录及一个名为App的类
    src/test/java测试代码目录及一个名为AppTest的测试用例

    2. maven-archetype-webapp
    一个最简单的Maven war项目模板,当需要快速创建一个Web应用的时候可以使用它。生成的项目内容包括:
    一个packaging为war且带有junit依赖声明的pom.xml
    src/main/webapp/目录
    src/main/webapp/index.jsp文件
    src/main/webapp/WEB-INF/web.xml文件

     

    小小插曲:

    groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的,如果你要把你项目弄到maven本地仓库去,你想要找到你的项目就必须根据这两个id去查找。
      groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
      比如我创建一个项目,我一般会将groupId设置为cn.xiaobing,cn表示域为中国,xiaobing是我个人姓名,artifactId设置为api_methods,表示你这个项目的名称是api_methods,依照这个设置,你的包结构最好是cn.xiaobing.api_methods打头的,如果有个Student类,它的全路径就是cn.xiaobing.api_methods.Student

    点击Finish完成创建:

    6.项目配置

       (1) 添加Source Folder

       Maven规定,必须创建以下几个Source Folder

       src/main/resources

       src/main/java

       src/test/resources

       src/test/java

       添加以上的Source Folder

    创建好后的目录如下:

     

    (2) 配置配置Build Path

     

    设定4个文件夹的输出Output folder,双击修改分别修改输出路径为
    src/main/resources  对应  target/classes
    src/main/java   对应  target/classes
    src/test/resources  对应  target/test-classes
    src/test/java   对应  target/test-classes

    (3) 设定Libraries

     

    配置完Build Path后目录如下:

     

    7.如需导入项目依赖如:fastjson

    拷贝到pom.xml文件中,保存即可!

    使用maven是为了更好的帮项目管理包依赖,maven的核心就是pom.xml。当我们需要引入一个jar包时,在pom文件中加上<dependency></dependency>就可以从仓库中依赖到相应的jar包。
    
    现在有这样一个场景,有两个web项目A、B,一个java项目C,它们都需要用到同一个jar包:common.jar。如果分别在三个项目的pom文件中定义各自对common.jar的依赖,那么当common.jar的版本发生变化时,三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。这时候就需要用到parent标签, 我们创建一个parent项目,打包类型为pom,parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对common.jar的依赖,ABC三个子项目中只需要定义<parent></parent>,parent标签中写上parent项目的pom坐标就可以引用到common.jar了。
    
    上面的问题解决了,我们在切换一个场景,有一个springmvc.jar,只有AB两个web项目需要,C项目是java项目不需要,那么又要怎么去依赖。如果AB中分别定义对springmvc.jar的依赖,当springmvc.jar版本变化时修改起来又会很麻烦。解决办法是在parent项目的pom文件中使用<dependencyManagement></dependencyManagement>将springmvc.jar管理起来,如果有哪个子项目要用,那么子项目在自己的pom文件中使用
    
    <dependency>
    
        <groupId></groupId>
    
          <artifactId></artifactId>
    
    </dependency>
    
    标签中写上springmvc.jar的坐标,不需要写版本号,可以依赖到这个jar包了。这样springmvc.jar的版本发生变化时只需要修改parent中的版本就可以了。
    --------------------- 
    原文https://blog.csdn.net/qq_41254677/article/details/81011681 

     8.总结:不足之处后续修改补充,分享给需要的人!

  • 相关阅读:
    Codeforces Round #271 (Div. 2) C. Captain Marmot
    Codeforces Round #271 (Div. 2) F. Ant colony
    hdu 5002 Tree
    hdu 5052 Yaoge’s maximum profit
    hdu5044 Tree
    Codeforces Round #267 (Div. 2) D. Fedor and Essay
    hdu 4991 Ordered Subsequence
    暑假
    hdu4632 Palindrome subsequence
    【Oracle】【32】TRUNC 截取
  • 原文地址:https://www.cnblogs.com/xiaozhaoboke/p/10841314.html
Copyright © 2011-2022 走看看