- 浏览: 243851 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
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 919#!/bin/bash source /etc/profil ... -
sql。导出数据
2011-06-29 16:32 911group by为了统计 LOAD DATA L ... -
java NAN
2011-02-18 16:01 1566今天调试程序时,意外的发现java的浮点数中也有NaN,留 ... -
mysql5 unsigned 相减出现补数 溢出 解决办法
2011-01-11 14:35 18772010-08-17 17:36 在网上查 ... -
HashMap
2010-12-30 21:12 924Iterator<Ent ... -
sed grep
2010-12-30 12:52 943[admin@consign020090 12]$ grep ... -
SQL统计
2010-12-29 14:32 979select cooperate_id,count(*) f ... -
sed grep
2010-12-10 13:16 975tail -fn 1000 20 ... -
JAVA内存模型和多线程
2010-11-29 16:23 1156先了解一下java内存模型 IBM:http://www.i ... -
文件,流
2010-11-11 13:08 967public String getFullFileNa ... -
关于Interger和Long的hashCode
2010-11-03 15:08 2072/** * Returns a hash ... -
java配置文件
2010-10-18 14:22 1112(2010-03-04 20:53:29) 转 ... -
1111
2010-10-18 13:30 0http://blog.chinaunix.net/u2/73 ... -
性能研究
2010-10-15 16:40 1047import java.util.Arrays; im ... -
<![CDATA[...]]>的用法 转载
2010-10-08 16:17 1682关于xml中的<![CDATA[...]]>的 ... -
java beanUtils 转载
2010-09-03 17:53 56111. 概述 c ... -
转载:性能调优
2010-07-16 14:46 895性能测试过程中,我 ... -
前端json数据生成
2010-06-08 16:15 1411TB.BBC.MyApplication.in ... -
String内部实现
2010-03-28 01:20 1313import java.applet.Applet; imp ... -
转载 java网络编程 注意点
2010-03-18 15:59 1611一. 网络程序运行过程中的常见异常及处理 ...
相关推荐
<dependencyManagement> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> ...
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> </properties> </profile> ``` **5. 创建SSM项目** - 在Eclipse中选择`New` -> `Maven Project`,然后按照向导步骤操作: - `Next` -> ...
1. **配置`mybatis-generator-maven-plugin`**:在`pom.xml`的`<build>`节点内添加插件配置,以便在构建过程中执行代码生成任务。示例代码如下所示: ```xml <build> <plugins> <plugin> <groupId>org.mybatis...
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Greenwich.SR3</version> <type>pom</...
在`pom.xml`的根节点下,`<project>`标签内,首先需要设置项目的基本信息,如groupId(组织ID)、artifactId(模块ID)、version(版本号)等,这些构成了Maven坐标,用于唯一标识项目。 ```xml <project> ...
<arg>${project.build.directory}/.scala_dependencies</arg> </args> </configuration> </execution> </executions> </plugin> </plugins> </build> ``` Spark 算子是 Spark 框架中的一种核心组件,它提供了...
同时,确保`<properties>`节点内的`<project.build.sourceEncoding>`和Java版本(`<maven.compiler.source>`和`<maven.compiler.target>`)已正确配置。 现在,我们已经准备好了使用RestAssured进行HTTP请求的环境...
这段代码展示了如何在Maven项目中添加ActiveMQ和其他相关依赖项。这里需要注意的是,每个依赖项都指定了特定的版本号,这有助于确保项目使用的库版本一致,避免因版本冲突而引起的问题。 综上所述,ActiveMQ作为一...
【MAVEN打可运行jar包】是Java开发中常见的任务,用于将项目打包成一个可独立运行的JAR文件,方便部署和分发。在Java世界里,Maven是一个强大的项目管理和依赖管理工具,它通过配置文件(pom.xml)来管理项目的构建...
<artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.4.1</version> <executions> <execution> <id>Generate MyBatis Artifacts</id> <goals> <goal>generate</goal> </goals> ...
<artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <executions> <execution> <id>GenerateMyBatisFiles</id> <goals> <goal>generate</goal> </goals> <phase>generate-...
- 添加 `spring-boot-maven-plugin` 配置至 `pom.xml` 文件的 `<build>` 节点中,并设置 `<fork>` 属性为 `true`,确保 devtools 能够正常工作: ```xml <build> <plugins> <plugin> <groupId>org.spring...
4. 在 `<profiles>` 节点下可以添加远程仓库,用于特定项目的依赖。 四、Maven 使用 1. 创建 Maven 项目:使用 Maven Archetype 快速生成项目骨架。在命令行输入: ```bash mvn archetype:generate ``` 按照...
<dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.5.7</version> </dependency> <dependency> <groupId>io.netty</groupId> ...
本示例将讨论如何使用Java语言在Spark中连接MongoDB进行CRUD(创建、读取、更新和删除)操作,同时涉及到Spring框架和Maven构建工具。 首先,我们需要确保已安装并配置了Spark、Java、MongoDB以及Maven。在Java项目...
Maven多模块之父子关系的...本文详细介绍了Maven多模块之父子关系的创建,包括父模块和子模块的创建、父子模块继承关系、<dependencies>节点和<dependencyManagement>节点的作用等。希望对大家的学习和工作有所帮助。
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.8</version> </dependency> ``` 或者直接使用HikariCP: ```xml <dependency> <groupId>com.zaxxer</groupId>...
在这个例子中,`groupId`、`artifactId` 和 `version` 组成了项目的唯一标识,`dependencies` 节点则列出了项目所依赖的库。 总结来说,Maven 3.2.3 的环境配置主要包括下载、环境变量设置、验证安装、定制配置和...
Maven通过pom.xml文件中的<dependencies>节点来管理项目依赖。例如,引入Spring框架的依赖: ```xml <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version...