maven开发过程管理之实践一(开发环境与代码隔离 generate-sources)

本文主要是介绍maven开发过程管理之实践一(开发环境与代码隔离 generate-sources),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

          在上一篇博客使用maven进行开发过程管理之准备篇中提到了maven的基本概念。IT男罗书全觉得概念我是懂了,但是那些东西似乎离我很远啊。先开发再说吧,

   于是IT男罗书全就在svn上取了源代码,并开始导入到本地开发环境中去。三下五除二,点击import,出现熟悉的导入界面。DU9Q7CTG{6L(($4_1(GC~AD

 

      导入失败,这是怎么回事?问了同事才知道,公司使用的是idea开发环境,而自己用的是eclipse.怎么办呢?放弃自己心爱的eclipse,真痛苦,而且不熟悉会导致开发效率较低。有没有两全其美的办法呢?有的。image

 

 

       想想大家做数据访问层时,hibernate是怎么实现兼容不同数据库的呢?创立中间的一种语言,比如hql,在配置里得知连接的数据库具体类型时,调用其适配功能实现hql-->相应数据库sql的转换。Maven的原理也是类似,提供了pom描述文件来对项目的组成要素做了说明,如src,target,lib等的位置,在命令中得知需要适配哪个开发环境中时,就可以转换过去。这样就给具体开发提供了一定的灵活性。在maven中提供了转换到主流环境eclipse的插件maven-eclipse-plugin,相应转换命令是eclipse:eclipse.对于IDEA也提供了转换到IDEA的插件maven-idea-plugin,转换到相应开发环境的命令是idea:idea.

 

      IT男罗书全在命令行中进入项目所在根目录下,运行maven eclipse:eclipse,然后导入,成功了。IT男罗书全欣喜万分,在欣喜万分的同时,又疑惑了,maven是怎么做的转换的呢?

 

       

 

image其实任何开发环境都是要识别项目特性,才能顺利进行开发的。比如在eclipse项目里面,可以看到有几个基本要素,如像src/main/java文件夹上有个包的,就是源代码目录,源代码目录就是放置用户编写源代码的位置。像target目录,就是生成目标文件的地方,如class文件等。Referenced Libraries就是放置项目依赖的jar包的地方等。

 

 

 

这些项目描述都是在.classpath和.project中说明的。例如.classpath文件:

QQ截图20111019093401

 

 

显然的,可以得出以下几个结论:

  1.   kind="src",path=src/main/java,里面说明了src的位置;    
  2.   kind="output”,path=target/classes,说明了target目录的位置;
  3.   kind=“var”,说明的是一个lib的位置。

.project文件中说明了此项目需要的插件,以及使用的builder.

  那么maven又是怎么做的呢?其实他也是分析了所有开发环境的共性,而对其概念作了抽象。在下面的代码中说明:

org.apache.maven.plugin.ide.AbstractIdeSupportMojo.java

   1:        boolean processProject = setup();
   2:        if ( !processProject )
   3:        {
   4:            return;
   5:        }
   6:        // 解析得到所有的依赖,形成lib引用
   7:        IdeDependency[] deps = doDependencyResolution();
   8:        //绑定source代码和javadoc
   9:        resolveSourceAndJavadocArtifacts( deps );
  10:        //生成特定开发环境的配置文件
  11:        writeConfiguration( deps );
  12:        reportMissingArtifacts();

 

这是个template模式的实现,具体的开发环境只要继承AbstractIdeSupportMojo来override其中的writeConfiguration(deps)来生成具体的配置文件。

    因此,maven 对开发环境与源代码的隔离提供了强有力的插件支持,兼顾了不同程序员的爱好,从而提高了整体的开发效率。

 

推荐书籍:

1.maven书籍:Maven实战--徐晓斌

2.21届JOLT大奖--开发过程方法论:持续交付:发布可靠软件的系统方法

参考资料:

Apache Maven2 简介

转载于:https://www.cnblogs.com/jinspire/archive/2011/10/19/2217268.html

这篇关于maven开发过程管理之实践一(开发环境与代码隔离 generate-sources)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/537008

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推