美文网首页
Ant项目升级到Maven

Ant项目升级到Maven

作者: Running_阿文 | 来源:发表于2020-09-10 15:27 被阅读0次
前提
  1. 首先开发环境已经安装了Maven
  2. 并且开发工具需要支持Maven(版本不能太老),开发工具最后不要太老了
  3. 并且已经配置好了Maven,然后才能进行下一步。
步骤
  • 新建一个Maven项目
  1. 把ant的项目的src下目录copy到 src\main\java 下,
  2. 把ant项目的配置文件全部copy到 src\main\resources 下,
  3. 把ant项目的页面、js、css等copy到 src\main\webap

注意:要把ant项目下的WEB-INF/lib下的jar全部删除掉,保留lib目录

  • jar包处理

在pom.xml文件中添加以下配置:

  1. 私服仓库地址
  2. 插件管理中添加maven插件的支持、
  3. resource配置资源文件路径,源文件路径
  4. 项目所用的jar都要添加到pom文件中(这是个比较繁琐的工作,容易造成jar冲突),个人建议,最好和项目中使用的jar的版本保持一致。

注意:有时候pom中添加了jar后它还依赖了其他jar,这个时候处理起来就比较麻烦了,需要一个一个找是哪个jar的问题。



遇到的坑

  • 导入jaxen.1.1.3.jar后会报错
Failure to find maven-plugins:maven-findbugs-plugin:plugin:1.3
Failure to find maven-plugins:maven-cobertura-plugin:plugin:1.3

原因:因为jaxen-1.1.3依赖了以上两个JAR
解决方案: 需要改为下面的导入方式

<dependency>
    <groupId>jaxen</groupId>
    <artifactId>jaxen</artifactId>
    <version>1.1.3</version>
    <exclusions>
        <exclusion>
            <artifactId>maven-cobertura-plugin</artifactId>
            <groupId>maven-plugins</groupId>
        </exclusion>
        <exclusion>
            <artifactId>maven-findbugs-plugin</artifactId>
            <groupId>maven-plugins</groupId>
        </exclusion>
    </exclusions>
</dependency>
  • @Repository注解报错

原因:经过jar的反复检查发现@Repository引用的是spring-2.0.jar里的,实际应该引用spring-context-3.2.2.RELEASE.jar中的。
经排查,jcaptcha-all.1.0-RC6.jar中依赖了spring-2.0.jarJAR,因为当时私服上没有jcaptcha-1.0-all.jar,只有jcaptcha-all.1.0-RC6.jar所以就用了它,真是好坑啊[流泪]

<dependency>
    <groupId>com.octo.captcha</groupId>
    <artifactId>jcaptcha-all</artifactId>
    <version>1.0-RC6</version>
</dependency>

解决方案:把jcaptcha-1.0-all.jar放到项目中进行引用

  • mvn install无法生成war包
    在myeclipse中使用mvn的install无法生成war包
    在项目目录下cmd中使用mvn install可以正常生成
    应该是myeclipse的maven配置问题(老项目使用的旧版本的开发工具),切换开发工具

  • java.lang.NoSuchMethodError: org.hibernate.cfg.Environment.verifyProperties(Ljava/util/Map;)V
    原因:hibernate的jar冲突,引用了spring-hibernate3,里面依赖了hibernate的4.x,导致jar冲突。
    解决方案:删除spring-hibernate3,把hibernate3.jar放入lib下进行引用

  • 部署到Tomcat后webapps/项目名称中只有META-INF、WEB-INF
    原因:myeclipse中项目配置问题
    解决方案:在项目上右单击—>Properties—>Deployment—>Deployment Assembly在右侧中选择src\main\webap的Deploy Path的值(双击选中),修改为/
    如果要部署到ROOT目录里,需要把这个页面中的Web Context Root的修改为/



  • Jenkins中 编译报错
[ERROR] No plugin found for prefix 'docker' in the current project and in the plugin groups [org.sonarsource.scanner.maven, org.apache.maven
.plugins, org.codehaus.mojo] available from the repositories [local (D:\apache-maven\repository), nexus (http://192.168.20.206:8081/reposito
ry/public)] -> [Help 1]

原因:插件不在maven配置文件settings.xml中pluginGroups的白名单里面
解决方案:修改maven的settings.xml配置文件,在<pluginGroups>节点中添加
<pluginGroup>com.spotify</pluginGroup>

  • Jenkins中 打包报错:编码GBK的不可映射字符

原因:由于本项目有点老,java类使用的编码是GBK,Maven打包时使用的是UTF-8,反复调整拉取、编译编码都不行。
解决方案:把java类文件编码改为UTF-8,OK了。

相关文章

  • Ant项目升级到Maven

    前提 首先开发环境已经安装了Maven 并且开发工具需要支持Maven(版本不能太老),开发工具最后不要太老了 并...

  • Clojure 编译器实现(1)

    Clojure编译的起点 Clojure项目可以使用maven编译,从maven的配置看,是通过maven-ant...

  • Eclipse使用Maven

    Ant与分布式 Ant和maven都是项目构建工具,比如MyEclipse的编译、运行、打包、导包、导出都是Ant...

  • maven技术(bjsxt)

    一、Ant 1、Ant和Maven都是项目构建工具 比如:eclipse中new java project创建Ja...

  • Maven与Ant比较

    Ant是软件构建工具,Maven的定位是软件项目管理和理解工具。Maven除了具备Ant的功能外,还增加了以下主要...

  • 工具概念

    Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具Maven项目对象...

  • Maven

    一 Ant 1. Ant 和 Maven 都是项目构建工具 2. 在项目的运行编辑打包等过程都需要依赖于...

  • gradle 初识

    gradle Gradle 是一个基于 Ant 和 Maven 概念的项目自动化构建工具 。 与 Ant 和 Ma...

  • Gradle的介绍

    gradle是什么 Gradle是一个基于Ant(Apache)和Maven(Ant)概念的项目自动化构建工具。他...

  • Maven 与 IntelliJ IDEA 的完美结合

    1. 什么是 Maven,为什么要使用 Maven 而不是 Ant Maven简单来说是一个项目管理工具,被认为是...

网友评论

      本文标题:Ant项目升级到Maven

      本文链接:https://www.haomeiwen.com/subject/tjepektx.html