Ⅰ maven的setting配置文件中mirror和repository的区别
repository就是个仓库。maven里有两种仓库,本地仓库和远程仓库。
Ⅱ maven配置文件settings.xml中的profiles怎么用
profile介绍
4.1profile简介
profile可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。比如说,我们可以通过profile定义在jdk1.5以上使用一套配置信息,在jdk1.5以下使用另外一套配置信息;或者有时候我们可以通过操作系统的不同来使用不同的配置信息,比如windows下是一套信息,linux下又是另外一套信息,等等。具体的激活条件有哪些我在后文会讲到。
4.2profile的定义位置
对于使用Maven3,我们可以有多个地方定义profile。定义的地方不同,它的作用范围也不同。
针对于特定项目的profile配置我们可以定义在该项目的pom.xml中。
针对于特定用户的profile配置,我们可以在用户的settings.xml文件中定义profile。该文件在用户家目录下的“.m2”目录下。
全局的profile配置。全局的profile是定义在Maven安装目录下的“conf/settings.xml”文件中的。
4.3profile中能定义的信息
profile中能够定义的配置信息跟profile所处的位置是相关的。以下就分两种情况来讨论,一种是定义在settings.xml中,另一种是定义在pom.xml中。
4.3.1 profile定义在settings.xml中
当profile定义在settings.xml中时意味着该profile是全局的,它会对所有项目或者某一用户的所有项目都产生作用。因为它是全局的,所以在settings.xml中只能定义一些相对而言范围宽泛一点的配置信息,比如远程仓库等。而一些比较细致一点的需要根据项目的不同来定义的就需要定义在项目的pom.xml中。具体而言,能够定义在settings.xml中的信息有<repositories>、<pluginRepositories>和<properties>。定义在<properties>里面的键值对可以在pom.xml中使用。
4.3.2 profile定义在pom.xml中
定义在pom.xml中的profile可以定义更多的信息。主要有以下这些:
l<repositories>
l<pluginRepositories>
l<dependencies>
l<plugins>
l<properties>
l<dependencyManagement>
l<distributionManagement>
l还有build元素下面的子元素,主要包括:
<defaultGoal>
<resources>
<testResources>
<finalName>
4.4profile的激活方式
Maven给我们提供了多种不同的profile激活方式。比如我们可以使用-P参数显示的激活一个profile,也可以根据环境条件的设置让它自动激活等。下面将对它们一一进行介绍:
4.4.1 使用activeByDefault设置激活
先看下面一个配置
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<properties>
<hello>world</hello>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>profileTest2</id>
<properties>
<hello>andy</hello>
</properties>
</profile>
</profiles>
我们可以在profile中的activation元素中指定激活条件,当没有指定条件,然后指定activeByDefault为true的时候就表示当没有指定其他profile为激活状态时,该profile就默认会被激活。所以当我们调用mvn package的时候上面的profileTest1将会被激活,但是当我们使用mvn package –P profileTest2的时候将激活profileTest2,而这个时候profileTest1将不会被激活。
4.4.2 在settings.xml中使用activeProfiles指定处于激活状态的profile
我们可以在settings.xml中使用activeProfiles来指定需要激活的profile,这种方式激活的profile将所有情况下都处于激活状态。比如现在我们定义了如下两个profile
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<properties>
<hello>world</hello>
</properties>
</profile>
<profile>
<id>profileTest2</id>
<properties>
<hello>andy</hello>
</properties>
</profile>
</profiles>
这里的profile可以是定义在settings.xml中的,也可以是定义在pom.xml中的。这个时候如果我们需要指定profileTest1为激活状态,那么我们就可以在settings.xml中定义activeProfiles,具体定义如下:
Xml代码
<activeProfiles>
<activeProfile>profileTest1</activeProfile>
</activeProfiles>
考虑这样一种情况,我们在activeProfiles下同时定义了多个需要激活的profile。这里还拿上面的profile定义来举例,我们定义了同时激活profileTest1和profileTest2。
Xml代码
<activeProfiles>
<activeProfile>profileTest1</activeProfile>
<activeProfile>profileTest2</activeProfile>
</activeProfiles>
从profileTest1和profileTest2我们可以看出它们共同定义了属性hello。那么这个时候我在pom.xml中使用属性hello的时候,它到底取的哪个值呢?是根据activeProfile定义的顺序,后面的覆盖前面的吗?根据我的测试,答案是非也,它是根据profile定义的先后顺序来进行覆盖取值的,然后后面定义的会覆盖前面定义的。
4.4.3 使用-P参数显示的激活一个profile
假设我们现在有如下定义的profiles
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<properties>
<hello>world</hello>
</properties>
</profile>
<profile>
<id>profileTest2</id>
<properties>
<hello>andy</hello>
</properties>
</profile>
<profiles>
那么当我们在进行Maven操作时就可以使用-P参数显示的指定当前激活的是哪一个profile了。比如我们需要在对项目进行打包的时候使用id为profileTest1的profile,我们就可以这样做:
Cmd代码
mvnpackage–PprofileTest1
当我们使用activeByDefault或settings.xml中定义了处于激活的profile,但是当我们在进行某些操作的时候又不想它处于激活状态,这个时候我们可以这样做:
Cmd代码
Mvnpackage–P!profileTest1
这里假设profileTest1是在settings.xml中使用activeProfile标记的处于激活状态的profile,那么当我们使用“-P !profile”的时候就表示在当前操作中该profile将不处于激活状态。
4.4.4根据环境来激活profile
profile一个非常重要的特性就是它可以根据不同的环境来激活,比如说根据操作系统的不同激活不同的profile,也可以根据jdk版本的不同激活不同的profile,等等。
4.4.4.1根据jdk来激活profile
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<jdk>1.5</jdk>
</profile>
<profiles>
上面情况表示在jdk为1.5版本系列的时候激活profileTest1。
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<jdk>[1.4,1.7)</jdk>
</profile>
<profiles>
上面的情况表示在jdk为1.4、1.5和1.6的时候激活profileTest1。
4.4.4.2根据操作系统来激活profile
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<os>
<name>WindowsXP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
</profile>
</profiles>
上面的情况就是根据操作系统的类型来激活profileTest1。
4.4.4.3根据系统属性来激活profile
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<property>
<name>hello</name>
<value>world</value>
</property>
</activation>
</profile>
</profiles>
上面的profileTest1将在提供了系统属性hello,并且其值为world的时候激活。下面的做法可以激活profileTest1。
Cmd代码
mvnpackage–Dhello=world
当是下面的这种定义形式时,profileTest1将在指定了系统属性hello,且其值为任意值的时候被激活。
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<property>
<name>hello</name>
</property>
</activation>
</profile>
</profiles>
4.4.4.4根据文件是否存在激活profile
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<file>
<exists>target</exists>
</file>
</activation>
</profile>
</profiles>
上面的定义表示当存在target文件时激活profileTest1。
Xml代码
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<file>
<missing>target</missing>
</file>
</activation>
</profile>
</profiles>
上面的定义表示当不存在target文件时激活profileTest1。
4.5查看当前处于激活状态的profile
我们可以同时定义多个profile,那么在建立项目的过程中,到底激活的是哪一个profile呢?Maven为我们提供了一个指令可以查看当前处于激活状态的profile都有哪些,这个指定就是mvn help:active-profiles。
现在假设我们的settings.xml文件中有如下profile的定义:
<profiles>
<profile>
<id>profileTest1</id>
<activation>
<file>
<missing>target</missing>
</file>
</activation>
</profile>
</profiles>
<activeProfiles>
<activeProfile>profileTest1</activeProfile>
</activeProfiles>
这个时候我们可以看到,我们已经定义了profileTest1始终为激活状态,这个时候我们使用mvn help:active-profiles查看处于激活状态的profile时,就会打印出如下内容:
Ⅲ maven打包问题,如何打包配置文件
方法一:pom.xml文件抄配置:如果配置文件放在src/main/resources目录下,maven默认会把这个文件夹下的文件复制到classes目录下,如果你不是放在默认目录下,你可以手动指定Resources目录和输出目录。配置如下:
<build><sourceDirectory>src/</sourceDirectory><outputDirectory>build/</outputDirectory></build>
方法二:把配置文件打包到其他目录:可以使用org.apache.maven.plugins插件。
Ⅳ maven 分层架构有什么好处
是的,在eclipse下创建都能看到这样的结构。java Resource下的src是专门存放java相关的源文件,src可以存放包括web在内的资源
Ⅳ maven中pom.xml配置文件怎么看
安装 Maven 之前要求先确定你的 JDK 已经安装配置完成。Maven是 Apache 下的一个专项目,目前最新版本是属 3.1.0,我用的也是这个。首先去官网下载 Maven下载完成之后将其解压,我将解压后的文件夹重命名成 maven,并将它放在 D:\Server 目录下,即 maven 最终的路径是:D:\Server\maven配置 maven 环境变量:系统变量:MAVEN_HOME = D:\Server\maven用户变量:path = %MAVEN_HOME%\bin相信大家都有配过环境变量的,详细步骤就不说了,对着把属性名和属性值配上的OK了。
Ⅵ 如何配置maven java 路径
第一步:配置maven的库1、在本地新建一个文件夹,来存放maven需要的jar库。2、修改maven配置文件settings.xml,D:\apache-maven-3.3.3\conf\settings.xml。使配置文件指向您刚才建的文件夹。第二步:eclipse配置maven1、打开cclipse,依次打开Windows–>Prefrences,点击Maven的右边的三角符号,以展开Maven的配置界面,2、然后点击Maven下面的Installations选项,出现如下界面,请点击Add按钮3、再后请选择您的maven安装路径,这里我的maven的安装目录为D:\apache-maven-3.3.3 ,选择你的maven安装目录,并点击确定, 之后可以点击Apply,点击OK,界面4、再然后点击Maven下面的User Settings选项,出现如下界面,请您点击第二个Browse..按钮,选择您第一步配置的maven配置文件settings.xml。然后点击下面的Update Settings按钮,再点击下面的Apply按钮,点击ok就完成了。第三步:测试maven是否安装成功1、打开Eclipse,创建Maven项目。依次点击File–>New–>Maven Project ,请选中Create a simple project(skip archetype selection),之后点击Next按钮。2、然后填写Group id和artifact id, Version默认,Packaging默认为jar,Name,Description选填,其他的不填,之后点击Finish按钮完成。
Ⅶ maven项目右上角有个J是什么意思
一、框架和架构的区别
框架是一种特殊的半成品软件,由代码组成,为构建解决方案提供良好的项目代码基础。
架构不是软件,属于文字性规范描述,是问题的抽象解决方案。
Spring框架是一个分层架构/Spring框架采用了分层架构的思想。
二、项目上的图标简介
1、项目上有个大写的M,表示的是项目使用了Maven工具【Maven是一个项目管理和整合工具:通过配置pom.xml文件,来管理项目的jar包的工具】。
2、项目上有个大写的J,表示的是项目使用了Java框架
【
Java框架就是一些类和接口的集合,通过这些类和接口协调来完成一系列的程序实现。
Java框架可以分为三层,俗称 Java三大框架|Java三层架构:表现层,业务逻辑层,数据访问层;Java三大框架是用来开发web应用程序中使用的。
(1)表现层(等价于MVC中的视图层和控制器)的主流框架有:struts1 ,struts2 ,springMVC ,webwork .
(2)业务逻辑层(采用了控制反转的技术,管理Bean,降低了各层之间的耦合)的主流框架有:Spring .
(3)数据访问层(做持久化的,对JDBC轻量级的封装,使得我们能过面向对象的操作数据库)的主流框架有:Hibernate,Ibatis,以及Ibatis的升级版Mybatis .
】
不需要使用服务器部署启动项目,仅在**.java文件中由main方法调用执行。
3、项目上有个地球图标,表示的是项目为Web项目;需要使用服务器Tomcat等部署启动项目,在浏览器展示页面。
4、项目上有个大写的S,表示的是项目使用了Spring框架【Spring是目前主流的 Java Web 开发框架】。
Ⅷ Maven-Spring多项目加载配置文件
1,classpath:applicationContext.xml改为classpath*:applicationContext.xml这么写也是一样的效果:classpath*:/applicationContext.xml2,在applicationContext.xml引用其它的配置文件:如果在同一个专jar包这么写,
Java代码
<importresource="classpath:/applicationContext-action.xml"/>
要导入其它jar包中属的配置文件,这么写
Java代码
<importresource="classpath*:/applicationContext-service.xml"/>
就这么简单,重新打包、部署、启动成功。
Ⅸ maven配置文件中moles是什么意思
moles
从字面意思来说,mole就是模块,而pom.xml中的moles也正是这个意思,用来管理同个项目中的各个模块;如果maven用的比较简单,或者说项目的模块在pom.xml没进行划分,那么此元素是用不到的;不过一般大一点的项目是要用到的。
1.需求场景
如果我们的项目分成了好几个模块,那么我们构建的时候是不是有几个模块就需要构建几次了(到每个模块的目录下执行mvn命令)?当然,你逐个构建没问题,但是非要这么麻烦的一个一个的构建吗,那么简单的做法就是使用聚合,一次构建全部模块。
2.具体实现
a.既然使用聚合,那么就需要一个聚合的载体,先创建一个普通的maven项目account-aggregator,
因为是个聚合体,仅仅负责聚合其他模块,那么就只需要上述目录,该删除的就删了;注意的是pom文件的书写(红色标明的):
<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.youbing.account</groupId><artifactId>account-aggregator</artifactId><version>1.0.0-SNAPSHOT</version><packaging>pom</packaging><name>AccountAggrregator</name><url>http://maven.apache.org</url><moles><!–模块都写在此处–><mole>account-register</mole><mole>account-persist</mole></moles></project>
b.创建子模account-register、account-persist:右击account-aggregator,new –> other –> Maven,选择Maven Mole,创建moven模块。
e.那么编码完了之后,我们只需要构建account-aggregator就好了,所有的子模块都会构建。