`
godo121
  • 浏览: 53229 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

maven的苦恼

阅读更多
maven对于java项目的开发代码组织无疑是很power的,简单清晰的pom配置,不用像ant那样关注复杂细节,灵活的组合编译打包等等,带来很多的便利。但也有让人很窝火的时候,尤其是你对它不是很了解情况下,非常容易出问题。今天就遇到一个版本变量问题。

通常组织一个比较大型的项目代码,目录数量还有层次深度是很多且复杂的,拆分为子项目,子项目下面又有子子项目,比如现在我们的项目

project-main
    |
    --client
    |
    --server
        |_serv-project1
        |
        --serv-project2
              |
              |-serv-project2-sub1
              |
              |-serv-project2-sub2
              ...

项目结构分了四级,现在有这样个需求,就是由project-main这一层来定义整个项目的版本号,子项目都需遵循project-main定义的版本号。那么就可以有两种方式来实现:1)子(子)项目中hard code版本号,这个方式当版本升级时非常麻烦,届时替换不可避免,当pom文件数巨大的时候很头疼。2)在project-main中,声明属性变量,例如:

<properties>
  <main.version>1.0</main.version>
</properties>


这么做的话,在子(子)项目中可以通过变量${main.version}引用。方式2似乎问题很好解决了,但是,但是的是,在开发当中,尤其是配合ide开发的时候,有个问题就此浮现了。比如,想单独对serv-project2-sub2进行maven build,这种要求很合理吧,遗憾的是,这时候maven找不到变量${maven.version}了,它会去repository找一些依赖,比如serv-project2-sub2依赖xx,它会去这么找xx-${maven.version},当然了,它是找不到的,因为${maven.version}无法识别。这个问题让人非常困惑,为什么maven不去做变量替换呢?这个我没搞懂,不过,在编译maven的时候,如果你的version是赋给变量,那么maven提示这是不鼓励的,可能有它的理由,但是这点不得而知。而且最古怪的是,当无法解析变量的时候,ide+maven提示的错误是很让人摸不着头脑,比如报slf4j的错误,往slf4这条路解决把你引入死胡同,让你一通抓狂。

这个问题很纠结,目前没有找到好的方法,所以只能暂时把版本号hardcode,即方式1。有好办法再写出来。

通常项目对代码模块化要求不是那么高的时候,我建议不需要用maven,只需要一个项目工程,利用IDE中的ant进行build就好,省不少事。要玩maven,根据项目情况定,并且你要有一个maven专家做后盾,否则就只有自个儿啃骨头。
分享到:
评论

相关推荐

    maven 3.5.2 maven 3.5.2 maven 3.5.2

    ** Maven 概述** Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。它通过使用一个统一的构建过程,简化了项目的构建、依赖管理以及文档生成等任务。Maven 3.5.2是Maven的一个稳定版本,包含了众多...

    maven安装maven安装maven安装maven安装maven安装

    maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...

    开源工具Maven3.9.4版本压缩包

    Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven3.9.4版本压缩包,仅供学习参考,更新版本请前往Maven官方下载;Maven...

    apache-maven-3.6.0_apache-maven-3.6.0_maven压缩包_maven3.6.0下载_

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和文档。Maven 3.6.0是该工具的一个稳定版本,提供了许多改进...

    Windoiws的maven3.8.8

    **Windows环境下Maven 3.8.8的安装与配置** Maven是Apache软件基金会开发的一个项目管理和综合工具,主要用于Java项目的构建、依赖管理和文档生成。Maven 3.8.8是Maven的一个版本,它包含了对之前版本的一些改进和...

    Maven全版本资源,Maven 3.0.5-3.8.5,每个版本包含4个文件,Maven3全资源打包下载,Maven全集

    apache-maven-3.0.5 apache-maven-3.1.1 apache-maven-3.2.5 apache-maven-3.3.9 apache-maven-3.5.4 apache-maven-3.6.3 apache-maven-3.8.5 每个版本包含4个文件: apache-maven-3.8.5-bin.tar.gz apache-maven-...

    使用Maven导入Maven工程的视频教程

    使用Maven导入Maven工程的视频教程 仅供学习交流! 后续会持续分享相关资源,记得关注哦! 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入Maven工程的视频教程 使用Maven导入...

    maven之开源中国Maven库

    【标题】"maven之开源中国Maven库" 指的是使用 Maven,一个流行的Java项目管理和集成工具,与开源中国的Maven仓库进行交互。开源中国Maven库是中国的一个开源软件资源平台,提供了大量的开源Java库,使得开发者可以...

    Mac的maven安装包apache-maven-3.6.3.zip

    在IT行业中,Maven是一个非常重要的工具,尤其对于Java开发者来说,它是项目管理和构建的首选。本篇将详细讲解如何在Mac系统上,特别是配备M1芯片的MacBook上安装Apache Maven 3.6.3。 Apache Maven是一个基于项目...

    apache-maven-3.6.2_maven_

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM)的概念,能够管理项目的构建、报告和依赖关系。Maven 的核心理念是通过标准化的构建生命周期和...

    maven.rar apache-maven-3.5.4

    Apache Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它基于项目对象模型(Project Object Model,POM),能够管理项目的构建、报告和文档,通过一套统一的构建生命周期和插件系统,极大地简化了软件...

    maven API maven API

    **Maven API 深入理解** Maven API 是 Apache Maven 的核心接口和类库,它是构建Java项目的重要工具,提供了强大的依赖管理和项目对象模型(Project Object Model, POM)。Maven API使得开发者能够通过简单的命令行...

    maven 3.8.8 解压安装版

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,...

    maven教程-maven教程-maven教程

    Maven是Java领域广泛使用的项目管理工具,它能够帮助开发者完成项目的构建、文档生成、报告、依赖管理和软件生命周期管理等工作。通过本文的介绍,我们可以了解到Maven的基本概念、安装配置、基本使用和深入应用详解...

    maven学校配置maven配置maven配置

    maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置maven配置...

    maven3.2.5安装包下载

    Maven最新版是款项目管理和构建自动化工具。Maven包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System)。 安装...

    Maven3.5.4本地安装包

    开发者可以使用插件扩展Maven的功能,例如,`maven-jar-plugin`用于打包JAR文件,`maven-war-plugin`用于打包WAR文件,`maven-compiler-plugin`负责编译源代码。 - **聚合与继承**:Maven支持项目聚合和继承,通过`...

    maven3.6的安装包

    ** Maven 3.6 安装与配置指南 ** Maven 是一个强大的项目管理工具,主要应用于Java开发领域。它简化了构建、依赖管理和项目生命周期的管理,通过使用一种标准化的项目对象模型(Project Object Model,POM)来描述...

    maven3.1、maven3.2安装包、源码及eclipse整合插件

    Maven是Java开发中的一款强大的构建工具,它管理项目依赖、构建生命周期和工件发布。这里我们关注的是Maven 3.1和3.2版本的安装包和源码,以及如何将Maven与Eclipse集成的插件。下面将详细介绍这些内容。 1. Maven ...

    apache-maven-3.8.6.zip

    apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-maven-3.8.6-bin.zip apache-...

Global site tag (gtag.js) - Google Analytics