- 浏览: 238915 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Wangwei86609:
非常好的规则引擎框架,支持决策树和多线程运行规则https:/ ...
规则引擎 -
xl6861989:
2 楼正确
Maven中<dependencies>节点和<dependencyManagement>节点的区别 -
cuitengfei2006x:
抄别人的有意思吗
hadoop MapReduce join -
rainbow_小春:
写的真心赞,向你学习,学着自己写一些东西
hadoop MapReduce join -
zsx0321:
outputStreamReader 应改为OutputStr ...
从装饰者模式的理解说JAVA的IO包
以前一直没有在意,今天建立maven工程的时候在<dependencyManagement>节点下加入了junit依赖,结果在dependency Graph中没有发现junit的依赖关系,怎么回事?没有加入项目依赖?遂google之
得解释:
1 .使用项目继承
利用项目继承可以将结构信息,部署信息,共同的依赖信息放置在单一的位置。在每个工程的 pom 中:
[...]
<parent>
<groupId>org.apache.maven.proficio</groupId>
<artifactId>proficio</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
[...]
这使得项目的 pom 可以继承顶层 pom 中的定义,检查顶层 pom 的 dependencies 部分:
<project>
[...]
<dependencies >
<dependency >
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency >
</dependencies >
[...]
</project>
在各个子模块的 pom 中没有对 Junit 依赖的定义,但是从顶层 pom 中继承了依赖的定义。
为了看清楚可以在一个子模块 pom 所在目录下,执行命令
#mvn help:effective-pom
可以看到最终起效果的 pom ,这在找错时很有效。
2 .管理依赖
在 pom 中指明 dependency management 元素的方式 maven 结合项目继承来管理依赖。在多模块应用中,可能多个子项目会有共同的依赖。此时为了正确运行,必须让所有的子项目使用依赖项的同一版本。必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的成果。因此,应在顶层的 pom 中定义共同的依赖关系。
在 Proficio 应用的顶层 pom 中的 dependency management 段如下:
<dependencyManagement>
<dependencies >
<dependency >
<groupId>com.devzuz.mvnbook.proficio</groupId>
<artifactId>proficio-model</artifactId>
<c>${project.version}</version>
</dependency >
<dependency >
<groupId>com.devzuz.mvnbook.proficio</groupId>
<artifactId>proficio-api</artifactId>
<version>${project.version}</version>
</dependency >
<dependency >
<groupId>com.devzuz.mvnbook.proficio</groupId>
<artifactId>proficio-core</artifactId>
<version>${project.version}</version>
</dependency >
<dependency >
<groupId>com.devzuz.mvnbook.proficio</groupId>
<artifactId>proficio-store-memory</artifactId>
<version>${project.version}</version>
</dependency >
<dependency >
<groupId>com.devzuz.mvnbook.proficio</groupId>
<artifactId>proficio-store-xstream</artifactId>
<version>${project.version}</version>
</dependency >
<dependency >
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
<version>1.0-alpha-9</version>
</dependency >
</dependencies >
</dependencyManagement>
注意 ${project.version} 变量指的是应用的 version 。
顶层 pom 中的 dependencies 与 dependencyManagement 中的 dependencies 元素有一个重要的区别:
dependencyManagement 中的 dependencies 元素只表明依赖项版本的优先选择,并不影响项目的依赖项;而 dependencies 元素则影响项目的依赖项。
检查 Proficio api 模块的 pom:
<project>
<parent>
<groupId>com.devzuz.mvnbook.proficio</groupId>
<artifactId>proficio</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>proficio-api</artifactId>
<packaging>jar</packaging>
<name>Proficio API</name>
<dependencies >
<dependency >
<groupId>com.devzuz.mvnbook.proficio</groupId>
<artifactId>proficio-model</artifactId>
</dependency >
</dependencies >
</project>
其中没有指明依赖项的版本信息,在顶层 pom 中的 dependencyManagement 中表明其优选的版本是 ${project.version} 即 1.0-SNAPSHOT 。为使其模块 pom 完整,其版本信息会注入其中。只有当 dependencies 元素中没有指明版本信息时, dependencyManagement 中的 dependencies 元素才起作用。
呵呵 一个是项目依赖,一个是多模块maven项目时候的依赖管理控制的.
评论
一句话,很到位,谢谢。
两者的不同点在于:
如果在parent-pom中直接用:
<dependencies >
<dependency >
。。。
</dependency >
</dependencies > ,
那么在子pom中将只能被动的接受parent所定义的版本。
但是如果在parent-pom中用的是:
<dependencyManagement>
<dependencies >
<dependency >
。。。
</dependency >
</dependencies >
</dependencyManagement>
则留给了子pom一个可以更改物价版本的权利,而不必一定要继承parent所定义的版本。
不知道我的理解对不??呵呵
发表评论
-
bash脚本
2012-02-01 15:27 869#!/bin/bash source /etc/profil ... -
sql。导出数据
2011-06-29 16:32 882group by为了统计 LOAD DATA L ... -
java NAN
2011-02-18 16:01 1510今天调试程序时,意外的发现java的浮点数中也有NaN,留 ... -
mysql5 unsigned 相减出现补数 溢出 解决办法
2011-01-11 14:35 18322010-08-17 17:36 在网上查 ... -
HashMap
2010-12-30 21:12 852Iterator<Ent ... -
sed grep
2010-12-30 12:52 895[admin@consign020090 12]$ grep ... -
SQL统计
2010-12-29 14:32 906select cooperate_id,count(*) f ... -
sed grep
2010-12-10 13:16 930tail -fn 1000 20 ... -
JAVA内存模型和多线程
2010-11-29 16:23 1109先了解一下java内存模型 IBM:http://www.i ... -
文件,流
2010-11-11 13:08 901public String getFullFileNa ... -
关于Interger和Long的hashCode
2010-11-03 15:08 2029/** * Returns a hash ... -
java配置文件
2010-10-18 14:22 1046(2010-03-04 20:53:29) 转 ... -
1111
2010-10-18 13:30 0http://blog.chinaunix.net/u2/73 ... -
性能研究
2010-10-15 16:40 1006import java.util.Arrays; im ... -
<![CDATA[...]]>的用法 转载
2010-10-08 16:17 1616关于xml中的<![CDATA[...]]>的 ... -
java beanUtils 转载
2010-09-03 17:53 55381. 概述 c ... -
转载:性能调优
2010-07-16 14:46 837性能测试过程中,我 ... -
前端json数据生成
2010-06-08 16:15 1354TB.BBC.MyApplication.in ... -
String内部实现
2010-03-28 01:20 1268import java.applet.Applet; imp ... -
转载 java网络编程 注意点
2010-03-18 15:59 1542一. 网络程序运行过程中的常见异常及处理 ...
相关推荐
<dependencyManagement> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> ...
<dependencies> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 连接池 --> <dependency> <groupId>com.alibaba</...
介绍 Scalang是消息传递和参与者库,它使Scala和Erlang应用程序可以轻松进行通信。 Scalang包含Erlang分布式节点协议的完整实现。 它提供了一个面向参与者的API ,该... <dependencies> <dependency> <groupId>com.
< dependencies> < dependency> < groupId>net.jworkflow</ groupId> < artifactId>jworkflow</ artifactId> < version>0.5-SNAPSHOT</ version> </ dependency></ dependencies>使用Gradle dependencies { compile...
<dependencies> <dependency> <groupId>com.tinysakura</groupId> <artifactId>smart_elk_client</artifactId> <version>1.0-RELEASE</version> </dependency> </dependencies> usage 1.配置elk节点 如果你是spring...
1、dependencies 和 dependencyManagement,plugins 和 pluginManagement 有什么区别? dependencyManagement 是表⽰依赖 jar 包的声明,即你在项⽬中的 dependencyManagement 下声明了依赖,maven 不会加 载该依赖...
这将引导一个具有以下内容的项目: guice和multibindings(用于依赖注入的guice扩展) Lombok消除锅炉板屑用于静态代码分析的Spotbug junit,mockito和hamcrest用于单元测试<dependencies><dependency><groupId>...
java源码精灵官方 DocuSign 电子签名 Java 客户端 SDK 要求 Java ...文件中,找到dependencies节点。 添加: <dependency> <groupId>com.docusign</groupId> <artifactId>docusign-esign-java</arti
第一步:修改 maven 根目录下的 conf 文件夹中的 setting.xml 文件,在 mirrors 节点上,添加内容如下 在里面添加 alimaven aliyun maven http://maven.aliyun.com/nexus/content/groups/public/ central
还需要注意的是,在后台查询数据,数据库字段里必须有TreeInfo实体类中的那几个字段,而且需要注意的是,最上面的节点的parentId必须是0,其下面的字节点的parentId必须是这个节点的id。如果不是最后一个节点(下面...
1.在project目录的build.gradle的allprojects节点添加 java maven { url "https://jitpack.io" } 如下: allprojects { repositories { jcenter() maven { url "https://jitpack.io" } } } 2.在自己Modul的...
再在app的build.gradle文件中,dependencies节点下添加: compile 'com.teaanddogdog:flowviewgroup:1.0.6' 版本建议根据最新版本修改 2、代码中使用 在布局xml文件中,把AutoNewLineViewGroup当做父布局,任何它...
一个简单的,可使用节点作为后端在Gradle中进行。 Hazelcast节点本身需要单独设置。 有关可用于生产环境的构建缓存实现(具有节点管理,使用情况统计信息,运行状况监视,复制,访问控制等),请参阅 。 如何使用 ...
VerificationCodeView 一、添加依赖 Android Studio:在项目...在布局中集成,注意需要在布局的根节点添加命名xmlns:zhangym="http://schemas.android.com/apk/res-auto" 方可使用自定义属性。 对应属性说明如下:
您可以使用assembly:single目标创建一个包含所有依赖项的可执行 jar,例如: mvn clean compile assembly:single跑步首先启动至少一个节点节点: diy-dist-db-node 8080(不同的节点使用不同的端口。) 使用以下...
首先使用以下命令启动至少一个节点节点: diy-dist-db-node 8080 (将不同的端口用于不同的节点。) 使用以下命令运行可执行的jar: java -jar target/diy-dist-db-1.0-SNAPSHOT-jar-with-dependencies.jar ...
在springboot的pom.xml中dependencies节点下 加入fastjson,百度aip的JavaSDK,以及mp3转pcm的mp3spi。 pom.xml 文件如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=...
compile(5.0以后api关键字取代)和interoperability是引入第三方库,两者的作用相同,但是作用域不同。 区别:compile是对父类父类共享可以升为jar包,interoperability作用域限于本项目 providedCompile:在编译时...
MediaPipe的记录了构建和使用MediaPipe AAR的步骤。 源代码是从MediaPipe的复制的。 这是一个分支,因为在主节点上它已被删除 在Gradle中的用法 在顶级build.gradle allprojects { repositories { ... maven { ...
一个简单的,可以使用作为后端在Gradle中进行。 Memcached服务器需要单独设置。 基于。 有关可用于生产环境的构建缓存实现(具有节点管理,使用情况统计信息,运行状况监视,复制,访问控制等),请参阅 。 如何...