Maven最佳实践

尽管Maven提供了“配置之上的约定”解决方案,但是仍然有足够多的必要配置引起严重的头痛。 在这篇文章中,我将与您分享一些最佳实践,以简化对POM文件的维护。
  1. 请勿使用已弃用的引用,例如$ {artifactId}或$ {pom.artifactId}。 使用新的$ {project.artifactId}语法。 请注意,此语法遵循XML文档结构,这使得记住和预测引用将导致的值变得容易。
  2. 尽量避免使用继承的属性。 开发人员可以轻松地忘记子POM使用某个属性,并更改该值,从而在意想不到的地方破坏了构建。 其次,在没有找到和检查父POM的情况下无法轻松查找属性的做法很烦人。
  3. 使用父pom的dependencymanagement部分来定义所有依赖项版本,但不要在此处设置作用域,以便所有依赖项默认情况下都可以进行作用域编译。
  4. 使用属性定义依赖项版本。 通过这种方式,您可以概览正在使用的所有版本,而无需滚动浏览依赖项部分的多个页面。
  5. 使用父pom的pluginmanagement部分来定义构建所使用的* all *插件的版本,甚至是标准的maven插件,例如maven-compile-plugin和maven-source-plugin。 这样,当发布新版本的插件时,您的构建不会突然有所不同。
  6. 当使用不在当前POM上方目录中的父POM时,请在您的父部分中定义一个空的relativePath元素。
  7. 使用依赖项插件检查项目中是否存在不必要的依赖项以及未声明但未使用的较少依赖项。 该目标称为“分析”,因此请在控制台上运行以下命令:“ mvndependency:analyze”
  8. 确保pom文件包含下载所有依赖项所需的所有存储库引用。 如果要使用本地存储库而不是从Internet上进行海峡下载,则可以使用Maven设置文件为poms中定义的各个存储库定义镜像。
  9. 如果使用Nexus,则不要创建同时包含托管存储库和代理存储库的存储库组。 这将大大降低响应速度,因为即使托管的存储库包含请求的工件,Nexus也会检查代理存储库的远程位置。
确保还阅读了Sonatype的最佳实践 。
参考: Geert Schuring博客上来自JCG合作伙伴 Geert Schuring的Maven最佳实践 。

翻译自: https://www.javacodegeeks.com/2012/06/maven-best-practices.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

51Nod - 1381 硬币游戏

51Nod - 1381 硬币游戏 有一个简单但是很有趣的游戏。在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平行线(如下图所示)。两条相邻平行线之间的距离是1,硬币的半径是R,然后我们来抛硬币到桌子上,抛…

Android中Activity和Fragment之间的通信

Android中Activity和Fragment之间的通信 Fragment启动Activity传数据到Fragment 举例:城市选择列表。一个Fragment启动Activity,Activity再把城市选择数据回传到Fragment中。Fragment中方法iv_city.setOnClickListener(new View.OnClickListener() {Ove…

NoSQLUnit 0.3.0发布

介绍 单元测试是一种验证应用程序中可测试的最小部分的方法。 单元测试必须遵循FIRST规则; 这些是快速,隔离,可重复,自我验证和及时的。 考虑到没有持久层(典型的关系数据库或新的NoSQL数据库)的JEE应用程…

proftpd java_Proftpd:编译安装

下载 proftpd# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.5a.tar.gz# wget https://github.com/proftpd/proftpd/archive/v1.3.5a.tar.gz# yum -y install gcc openssl-devel# ./configure --prefix/usr/local/proftpd/ \--sysconfdir/usr/local/proftpd/ \--ena…

javascript 相关小的知识点集合

本文主要是列出一些javascript 相关的,不限于javascript的,容易记错或者遗忘的小知识,小技巧。 1、javascript中的false 在 JavaScript,常见的 false 值: 0, 0, 0, -0, false, ,null,undefined,NaN 要注意空数组([])和…

AOS – 另外一个独特的页面滚动动画库(CSS3)

AOS 是一个用于在页面滚动的时候呈现元素动画的工具库,你可能会觉得它和 WOWJS 一样,的确他们效果是类似的。但是AOS是 CSS3 动画驱动的库,当你滚动页面的时候能让元素动起来,当页面滚回顶部的时候,元素能够回到前一个…

关于Java包

我希望我们都同意,方法和类应该很小,并且只有很少的依赖关系。 这种观点被广泛接受,而对“小”的解释则各不相同。 关于这一点有很多文献。 但是包裹呢? 有些人将包视为名称空间。 因此,包只是允许您为类重用名称的东西…

python中打开文件时只允许写入的模式是_详解python中各种文件打开模式

在python中,总的来说有三种大的模式打开文件,分别是:a, w, r当以a模式打开时,只能写文件,而且是在文件末尾添加内容。当以a模式打开时,可以写文件,也可读文件,可是在读文件的时候,会发现读出来的…

KVM 基本硬件容量扩容

在工作当中如果虚拟机的容量不够使用 如何添加呢? CPU添加 cpu添加有两种方式: 1 创建虚拟机的时候可以添加 # virt-install --help | grep cpu--vcpusVCPUS Number of vcpus to configure for your guest. Ex:--vcpus 5--vcpus 5,maxcpus10--vcpu…

JavaFX 2.0 Hello World

在讨论示例本身之前,我想向您展示如何在NetBeans中创建JavaFX应用程序。 (如果尚未安装JavaFX和NetBeans,请参阅我以前的文章《 安装JavaFX 2.0和NetBeans 7.7.1》 )单击“文件”菜单中的“新建项目”以打开项目向导。 然后选择“…

java 线程强制停止线程_java多线程之停止线程

在多线程开发中停止线程是非常重要的技术点。停止线程在Java语言中并不像break语句那样干脆。须要一些技巧性的处理。一、 异常法採用异常法来停止一个线程。首先我们须要了解一下两个方法的使用方法:1、interrupt()方法public class MyThread extends Thread{Over…

Android 上下文菜单(Context Menu)

一、概述 Android中,上下文菜单是通过onLongClick(...)事件访问的。在事件触发后显示菜单项。 在使用上下文菜单时,通常在onCreate(...)方法中,先行注册上下文菜单。在实现onCreateContextMenu(...)方法和onContextItemSelected(...)方法。 注…

RGB颜色空间alpha混合的方法

http://blog.csdn.net/xhhjin/article/details/6444782http://blog.csdn.net/xhhjin/article/details/6445460http://www.cnblogs.com/graphics/archive/2012/08/23/2643086.htmlhttp://www.oschina.net/code/snippet_1425046_27446 转载于:https://www.cnblogs.com/eustoma/p/…

Java怪异实践

总览 Java中有许多实践使我感到困惑。 这里只是一些。 使用-Xmx和-Xms 选项-Xmx广泛用于设置最大内存大小。 如Java HotSpot VM Options中所述,以-X开头的选项是非标准的(不保证在所有VM实现中均受支持),并且在以后的JDK发行版中…

saml java实现_java-saml

软件简介java-saml 是 Java 的 SAML 开发包。Maven&#xff1a;com.oneloginjava-saml2.4.0示例代码&#xff1a;Map samlData new HashMap<>();samlData.put("onelogin.saml2.sp.entityid", "http://localhost:8080/java-saml-tookit-jspsample/metadat…

双系统Ubuntu分区扩容过程记录

本人电脑上安装了Win10 Ubuntu 12.04双系统。前段时间因为在Ubuntu上做项目要安装一个比较大的软件&#xff0c;导致Ubuntu根分区的空间不够了。于是&#xff0c;从硬盘又分出来一部分空间&#xff0c;分给Ubuntu。于是有了这篇Ubuntu扩容过程记录&#xff0c;也可以当作是一篇…

使用MongoDB的MapReduce

MapReduce是Google在2004年推出的一种软件框架&#xff0c;用于支持对计算机集群中的大数据集进行分布式计算。 您可以从此处阅读有关MapReduce的信息 。 MongoDB是用C 编写的面向开源文档的NoSQL数据库系统。 您可以从此处阅读有关MongoDB的更多信息。 1.安装MangoDB。 请遵…

java epson指令集_EPSON机械手 SPEL+语言指令集

下面是全部指令的简明列表&#xff0c;放在这里方便参考。之后重要的指令&#xff0c;勇哥要拿出来单独学习。系统管理相关命令Reset 将控制器重置为初始状态。SysConfig 显示系统设置参数。SysErr 返回最新的错误状态或警告状态。Date 显示日期。Time 显示时间。Date$ 以字符串…

1、关于action中解决跨域请求问题:

&#xff08;1&#xff09;、action中使用ajax传值时HttpServletRequest request ServletActionContext.getRequest(); String origin request.getHeader("Origin"); HttpServletResponse response ServletActionContext.getResponse(); response.setContentType(…

dom contains 包含关系

<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>contains</title></head><body> <div id"p-node"> <div id"c-node">子节点内容&…