-
maven项目编译规则的更改配置------满足在同一目录
2017-08-25 09:17:23maven项目目录约定: src/main/java:只能编译java代码 src/main/resources:编译配置文件 需求:为了满足Mybatis接口开发规范:接口和映射文件必须在同一个目录 方案:放行xml文件,让xml文件在src/main/...maven项目目录约定:src/main/java:只能编译java代码src/main/resources:编译配置文件需求:为了满足Mybatis接口开发规范:接口和映射文件必须在同一个目录方案:放行xml文件,让xml文件在src/main/java也能被编译配置如下:在</project>标签下配置<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build> -
Maven简介
2021-03-23 09:26:33文章目录MavenMaven目录结构Maven安装修改配置文件修改镜像服务器地址修改本地仓库的位置本地仓库目录结构Maven的主要操作创建Maven工程项目编译项目测试项目打包项目发布 Maven 在开发过程中,我们需要导入各种功能...Maven
在开发过程中,我们需要导入各种功能性的jar包,而每次去官方平台下载再在开发工具中导入十分的繁琐,所以Apache开发了Maven项目管理工具,对软件项目提供构建和依赖管理的开源项目。
特性:
- 项目设置遵循统一的规则,保证不同的开发环境的兼容性
- 强大的依赖管理,项目依赖组件自动下载,自动更新
- 可扩展的插件机制,使用简单,功能丰富
Maven目录结构
- bin :可执行文件
- boot :引导文件
- conf :配置文件
- lib :依赖包
在bin目录中的mvn.cmd文件作为Maven的核心文件,所有的命令都依靠这个文件
Maven安装
访问Maven官网下载最新安装包
加载完成后,解压至指定目录,并添加环境变量。创建一个M2_HOME
的变量值为Maven的目录,再在PATH
中加入%M2_HOME%/bin
打开cmd输入mvn -v
能够正常打印Maven版本即为安装成功
修改配置文件
修改镜像服务器地址
Maven默认是从https://search.maven.org/地址下载所需的jar包,由于是国外的服务器所以访问时间可能较长。为了方便访问,阿里提供了镜像服务器(https://maven.aliyun.com/mvn/search)供开发人员下载jar包。
这里修改Maven中
/conf/setting.xml
文件,在mirrors
标签中添加阿里的镜像服务器<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
若阿里的镜像库中存在则优先从镜像服务器中下载,若没有再去官方服务器下载
修改本地仓库的位置
从服务器上拉取到本地的jar包默认保存在
${user.home}/.m2/repository
路径下,由于User文件夹都在C盘上考虑到文件管理和磁盘大小,都需要修改本地仓库的位置。修改Maven中
/conf/setting.xml
文件,在setting
标签中添加<localRepository>E:\03.WorkFile\.m2\repository</localRepository>
具体存放路径可自定义
本地仓库目录结构
所有的jar包都会被归纳在各自的文件夹中,文件夹按照包名进行逐级创建,需要找那个jar包就可以按包名逐级查找。Maven的主要操作
maven主要使用的操作包括一下几种:
- mvn archetype:generate :创建Maven工程结构
- mvn compile :编译源代码
- mvn test :执行测试用例
- mvn clean :清除产生的项目
- mvn package :打包项目
- mvn install :安装至本地仓库
创建Maven工程
打开cmd进入工作目录,输入
mvn archetype:generate
开始创建工程
初次创建工程,Maven会首先下载必要jar包,下载完成后提示需要创建的项目类型,一般选择默认的maven-archetype-quickstart
快速开发版本输入项目的groudId(机构或团体名称,一般以逆向工程名命名),artifactId(项目名称),version(项目版本)确认之后会提示创建package的路径,默认为groupId的路径。输入完成后确认信息,项目即可创建成功。
此时查看工程目录可以发现Maven已经自动创建好了一些信息
src目录包含了项目所有的源代码,main目录主要存放Java项目源码,test目录主要存放测试类的源码,Maven会自动生成一个包含主方法的类和一个测试类
pom.xml项目(Project)对象(Object)模型(Model)文件用于记录项目的基本信息和需要引入的jar包的信息
Maven会自动为我们导入JUnit测试类,后期开发如果需要用到其他jar包,可以在Maven仓库中查找该jar包的相关信息,并将其依赖信息复制到pom.xml文件中Maven就会自动下载jar包并添加到项目中。项目编译
在cmd中输入
mvn compile
就可以对项目进行编译
项目编译主要分为两部分,一部分为将资源文件存放在resource文件夹中,另一部分将编译好的class文件存放在target目录下。查看target目录可以看到编译好的class文件
项目测试
在cmd中输入
mvn test
,Maven会自动执行编译的文件是否能够执行通过
项目打包
在cmd中输入
mvn package
进行对项目的打包,若设置为生成jar包则会将项目在target目录下打成jar包,若设置的为war包则打包成war文件在打包之前会对项目进行测试,测试成功才能继续打包
项目发布
我们写好的jar文件如果也想像其他jar包一样在Maven中引用,可以使用
mvn install
命令将jar包发布到本地仓库中,下次再使用时就可以直接添加依赖。 -
Maven学习
2019-07-10 15:02:26Maven学习-上Maven工程的目录结构Maven的特点POM(Project Object Model)文件POM文件中的标签Maven仓库 Maven工程的目录结构 采用约定优于配置的原则 Maven的特点 1.管理的依赖自动更新 2.项目设置遵循统一的规则 3...Maven工程的目录结构
采用约定优于配置的原则
Maven的特点
1.管理的依赖自动更新
2.项目设置遵循统一的规则
3.向后兼容性,方便从旧版本 Maven移植到新版本中来
4.并行构建,编译的速度能普遍提高POM(Project Object Model)文件
pom.xml文件用来描述项目信息,包括了项目结构、依赖等信息。
maven中的pom文件都继承自父pom文件(super pom),其中包含了一些可以被继承的默认设置。
Maven 使用 effective pom(Super pom 加上工程自己的配置)来执行相关的目标,它帮助开发者在 pom.xml 中做尽可能少的配置,当然这些配置可以被重写。POM文件中的标签
必需的标签:
根标签: project 整个文件在project标签中
modelVersion|模型版本号,现在为4.0.0,声明项目描述符遵循哪一个POM模型版本。模型本身的版本很少改变
三个确定项目唯一性的标签:标签 描述 groupid 工程组的标识,如公司域名倒装 artifactid 工程标识,与groupid共同确定项目在仓库中的坐标 version 项目的版本号 其它常用的标签:
标签 描述 parent 包含继承父的项目信息 <artifactId>:被继承的父项目的构件标识符 <groupId>:被继承的父项目的唯一标识符 <version>:被继承的父项目的版本 <relativePath>:父项目的pom.xml文件的相对路径。 相对路径允许你选择一个不同的路径。默认值是../pom.xml。 Maven首先在构建当前项目的地方寻找父项目pom, 其次在文件系统的这个位置(relativePath位置),然后在本地仓库, 最后在远程仓库寻找父项目的pom。
标签 描述 dependencies 项目的依赖信息 <dependcies> <dependency> <!--依赖的group ID --> <groupId>org.apache.maven</groupId> <!--依赖的artifact ID --> <artifactId>maven-artifact</artifactId> <!--依赖的版本号。 在Maven 2里, 也可以配置成版本号的范围。 --> <version>3.8.1</version> <!-- 依赖类型,默认类型是jar。它通常表示依赖的文件的扩展名,但也有例外。一个类型可以被映射成另外一个扩展名或分类器。类型经常和使用的打包方式对应, 尽管这也有例外。一些类型的例子:jar,war,ejb-client和test-jar。如果设置extensions为 true,就可以在 plugin里定义新的类型。所以前面的类型的例子不完整。 --> <type>jar</type> <!-- 依赖的分类器。分类器可以区分属于同一个POM,但不同构建方式的构件。分类器名被附加到文件名的版本号后面。例如,如果你想要构建两个单独的构件成 JAR,一个使用Java 1.4编译器,另一个使用Java 6编译器,你就可以使用分类器来生成两个单独的JAR构件。 --> <classifier></classifier> <!--依赖范围。在项目发布过程中,帮助决定哪些构件被包括进来。欲知详情请参考依赖机制。 - compile :默认范围,用于编译 - provided:类似于编译,但支持你期待jdk或者容器提供,类似于classpath - runtime: 在执行时需要使用 - test: 用于test任务时使用 - system: 需要外在提供相应的元素。通过systemPath来取得 - systemPath: 仅用于范围为system。提供相应的路径 - optional: 当项目自身被依赖时,标注依赖是否传递。用于连续依赖时使用 --> <scope>test</scope> <!--仅供system范围使用。注意,不鼓励使用这个元素,并且在新的版本中该元素可能被覆盖掉。该元素为依赖规定了文件系统上的路径。需要绝对路径而不是相对路径。推荐使用属性匹配绝对路径,例如${java.home}。 --> <systemPath></systemPath> <!--当计算传递依赖时, 从依赖构件列表里,列出被排除的依赖构件集。即告诉maven你只依赖指定的项目,不依赖项目的依赖。此元素主要用于解决版本冲突问题 --> <exclusions> <exclusion> <artifactId>spring-core</artifactId> <groupId>org.springframework</groupId> </exclusion> </exclusions> <dependency> <dependcies>
Maven仓库
本地仓库:
在第一次执行 maven 命令的时候才被创建。默认情况下,不管Linux还是 Windows,每个用户在自己的用户目录下都有一个路径名为 .m2/respository/ 的仓库目录。
Maven 本地仓库默认被创建在 %USER_HOME% 目录下。要修改默认位置,在%M2_HOME%\conf 目录中的 Maven 的 settings.xml 文件中定义另一个路径。
中央仓库:
不需要配置
远程仓库:<repositories> <repository> <id>companyname.lib1</id> <url>http://download.companyname.org/maven2/lib1</url> </repository> <repository> <id>companyname.lib2</id> <url>http://download.companyname.org/maven2/lib2</url> </repository> </repositories>
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从中央仓库下载构件至本地仓库,中央仓库没有再从远程仓库获取。然后再使用本地仓库的构件。
-
Maven基础
2016-07-09 16:39:09maven对项目目录结构、测试用例方法提供了成熟的规则。约定优于配置。 总结: 1自动构建工具,抽象构建的生命周期。构建方面:清理,编译,测试到生成报告,打包和部署。 2依赖管理,提供中心仓库。引入经纬...maven:服务于基于java平台的项目构建,依赖管理和项目管理信息。maven是跨平台的。
maven对项目目录结构、测试用例方法提供了成熟的规则。约定优于配置。
总结:
1自动构建工具,抽象构建的生命周期。构建方面:清理,编译,测试到生成报告,打包和部署。
2依赖管理,提供中心仓库。引入经纬确定每一个构件artifact。
3良好的测试集成。 maven对于”如果想要在打包前进行测试,如果测试不通过不打包”这种需求很容易做到。
4良好子项目管理。 maven对于项目来说,可以有一个大项目包括N个子项目构成。而不是像eclipse,只可以有一个根项目。
运行maven命令实际是在maven文件夹下的bin文件下的具体执行。它的实际执行也是执行的java。
构建工具:make,不跨平台。ant,相当于java版本的ant。
maven项目的核心是pom文件。定义项目基本信息,项目如何构造,声明依赖。
pom文件中xml头,指定xml文档的版本和编码方式。最重要的是groupid,artifactid,version,这三个元素定义了一个项目的坐标。groupid定义了项目属于哪个组,这个与公司有关,开辟一个myapp项目,那么groupid定位net.wanpro.myapp。artifactid相当于在当前maven项目在组中的唯一id。可能需要为不同的子项目子模块分配artifactid。version版本,SNAPSHOT快照。
pom实现与具体代码相互分离。
pom中的依赖用groupID,artifactid,version来定坐标。scope来确定范围,test表示只对测试有效。即在测试代码中可以用import这个包,出了测试就不可。
单元测试:一个典型的单元测试包括三个部分,准备测试类和数据,执行,检查结果。
执行打包命令的时候,即mvn clean package命令,输出到target目录,先编译再测试。命名方式artifactid-version.jar形式。
如果有需要我们可以把这个jar复制到其他的项目中从而使用它。如果想maven直接引用这个jar,需要安装,执行mvn clean install
install将项目的构建输出文件安装到本地仓库中。
mvn package 只是将你的代码打包到输出目录,一般的是 target下面。
install是把打出的包装载到本地仓库,一般没有设置过是在 用户目录下的 .m2\下面。
只有构件被下载到了本地仓库才能为项目所有。同样也试用于自己写的模块。
mvn clean install命令,构建项目,执行编译测试打包工作,最后将构建安装到本地仓库。该模块就可以供给其他maven项目使用。
世界上任何一个构件都可以使用maven坐标唯一标示,maven坐标元素表示groupID,artifactid,version,packaging,classifier。
groupid定义实际项目。一个实际项目中往往有很多模块。例如SpringFramework这个实际的项目需要使用模块来分割。artifactid,推荐命名办法是使用实际项目名称作为前缀,版本号跟上。packaging打包方式,不确定的时候就是jar。
classifier用来帮组定义构建输出的一些附属附件。不能直接定义附属附件,因为附属附件不是默认生成的而是通过附加的插件生成的(没太懂)
在maven世界中,任何一个依赖,插件或者项目构造的输出都可以成为构件。构件的物理表现形式是文件。maven通过仓库来统一管理。
仓库的布局方式:任何一个构件都有其坐标,通过坐标定义在仓库中的存储路径。groupid/artifactid/version/artifactid-version.packaging
仓库分为两种,本地仓库和远程仓库。远程仓库分中央仓库,私服,其他公共库。
私服是架设在局域网内的仓库服务。私服代理广域网上的远程仓库。当maven需要下载构件的时候,从私服上请求,当私服上不存在这个构件,就从远程库下载。本地也可以上传构件供内部使用。私服的好处:加速构建,节省带宽,提高部署内部构件。
maven的生命周期包括,清理,初始化,编译,测试,打包,集成测试,验证,部署。生命周期抽象了构建的步骤,具体的实现靠的插件。
maven的生命周期和插件机制保证了所有的maven项目有一致的构建标准,又通过默认插件简化和稳定了实际项目的构建。用户可以通过配置插件自定义插件编写插件来自定义构建行为。
三个生命周期:clean,default,site。每个生命周期内有不同的阶段。
软件越来越复杂,设计人员通过各种方式把软件分为模块,得到更加清晰的设计和重用性。maven的聚合特性把项目的各个模块聚合在一起构建。
配置maven
maven:提供版本管理
版本管理:管理软件版本,依赖(包)管理,各种插件(打包,发布)
由于Maven会把所有依赖的包放在本机的一个目录下,所以实际上是脱离Project本身存在的。IntelliJ IDEA引入了一个External Library的概念,所有的Maven依赖性都会放在这里,和项目自带的库区分开。并且Module之间会智能的判断,你不需要Maven Install来进行引用代码的更新。
pom.xml这个文件是我们Maven项目的核心文件,POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖。
maven的另外的核心是关于生命周期和插件。
生命周期本身是抽象的,本身不做任何事情,具体的事项由插件完成。
maven有三套生命周期。相互独立的生命周期。
分别为clean,default,site。
clean生命周期中用户清理项目,default的目的用于构建项目。site建立项目站点。
每个生命周期中有一些阶段,各个阶段是有前后顺序的。
clean的生命周期pre-clean,clean,post-clean.当执行clean的时候会执行pre.
default的生命周期定义了真正构建时所需要完成的工作。(此部分的意义在于编译测试打包安装等,涉及的东西较为复杂。暂时理解不了)
site建立和发布项目站点。
常用的maven使用命令:
clean install
mvn:run
-
第1章 Maven简介
2019-04-18 16:48:071 Maven是啥 Maven是优秀的项目管理工具,具体来...Maven对项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些规则,用户在项目间切换的时候就免去了额外的学习成本,可以说是约定优于配置(Conv... -
Windows系统maven安装配置
2019-03-04 22:25:00Apache Maven是一个软件项目管理工具,基于项目对象模型(Project Object Model,即POM)的概念,Maven可用来管理项目的依赖、编译、文档等信息。使用Maven管理项目时,默认配置项目依赖的jar包将不再包含在项目目录... -
第1张 Maven简介 学习笔记
2018-05-23 18:45:00什么是构建?...Maven对于项目目录结构、测试用例命名方法等内容都有既定的规则 约定优于配置(convertion Over Configuration) 免去了额外的学习成本 IDE的特显 编译、测试、代码生成等工... -
Maven多模块项目打包配置
2020-11-12 14:09:04目录结构也是遵循规则 1.src/main/java的结构 2./src与/test与pom.xml一个层级 最后还是配置的问题 在出问题的模块pom.xml添加如下配置 需要打包的目录都需要指定 java文件位置 resource文件的位置 外部jar包的位置... -
maven(一)下载,安装和配置
2018-04-02 22:32:18依赖管理和项目信息管理:我们所需的开源类库只需通过中央仓库找到,引入经纬,给每个类库定位了坐标,maven就能够帮我们自动下载,maven对于项目目录结构等内容都有既定的规则(约定大于配置)。02.maven的安装和配... -
精通maven系列(二):常用命令和生命周期
2019-08-05 20:02:331.maven常用的命令 1.1 clean(清理) clean命令作用是:清理项目中target目录下文件。 1.2compile(编译) compile命令作用是:将.java文件编译成 .class文件。 1.3test(测试) test命令作用是:运行src-... -
《Maven实战》读书笔记(一)
2020-10-14 22:52:49一、Maven是什么 1. 构建工具 实现自动化构建,从清理、编译、测试、生成报告、打包、部署; 最大程度消除重复构建、抽象了构建...定义了项目目录结构、测试用例命名方式等既定规则,降低项目切换时的学习成本 . -
仓库
2019-09-26 19:55:551、仓库maven编译时会按照配置中的构件坐标把依赖加到CLASSPATH2、构件坐标与仓库路径,仓库根目录 groupid/artifactid/version/arifactid-version.packaging|extension--classfier3、仓库分类 构建开始时,会先在... -
Android-Makefile
2019-04-05 23:30:35在Android的源代码中,随处可见Makefile,那么Makefile到底是...一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后... -
Android之makefile
2018-11-01 22:45:00在Android的源代码中,随处可见Makefile,那么Makefile到底是...一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后... -
maven编译安装zheng/pom.xml文件即可 启动顺序(后台) 准备工作 新建zheng数据库,导入project-datamodel文件夹下的zheng.sql 修改各dao模块和rpc-service模块的redis.properties、jdbc.properties、...
-
单点登录源码
2018-01-09 20:56:08Maven | 项目构建管理 | [http://maven.apache.org/](http://maven.apache.org/) #### 前端技术: 技术 | 名称 | 官网 ----|------|---- jQuery | 函式库 | [http://jquery.com/](http://jquery.com/) Bootstrap | ... -
maven部署源码(主模块:WTS/src/wts-web )编译顺序:wts-core > wts-parameter > wts-report > wts-authority > wts-quartz > wts-doc > wts-exam > wts-tag > wts-web 创建数据库,...
-
下载源码,安装好jdk和maven,编译成功 修改配置文件 如上创建好配置文件duckula-ops.properties,你可以在bootstrap.yml修改配置文件的位置。 启动springboot的启动类 启动类为:...
-
dependencies = [] 是依赖第三方库的配置,可以加新库,但不要去修改原有第三方库的版本号,不然可能会编译不过 1.4、配置AndroidManifest 添加权限: <uses-permission android:name="android.permission....
-
原因是服务器上的fastDFS源码(c语言编写的那个)的commons包下fdfs_global.h中FDFS_FILE_EXT_NAME_MAX_LEN=6, 于是将6改为16, make.sh重新编译后, 解决了传后缀长文件的问题(#157 感谢@787390869提供解答) 其他...
-
Spark从入门到上手实战
2018-06-07 16:06:1067.官方案例:RDD#top函数使用(自定义排序规则)及提交运行YARN集群 68.内核调度:Spark Job Scheduler详解(一) 69.内核调度:Spark Job Scheduler详解(二) 第5章:Spark SQL 70.SparkSQL的重要性及Spark2.x... -
maven和Gradle是java构建工具的不三之选,这两个优选一个。ANT是之前的构建工具,不需要详细掌握,了解即可。 1.3 虚拟化工具 Docker的横空出世,打造了一个新的虚拟化时代,凭借其优异的性能和资源占用率,Docker...
-
新增功能:相册内部自带拼一张功能(可通过配置不使用该功能,该模式拼图保存的图片存储在 sd卡根目录/你的app_name 文件夹下) 新增功能:拼图页面增加文字贴纸功能 界面优化:无权限时的相册界面优化,使之更加...