zoukankan      html  css  js  c++  java
  • maven打war包后无法依赖本地工程的jar包,造成debug时跳到class文件而不是本地java文件

      问题现象:项目结构如下

      growup-service

                    | - - - - - -growup-api

                    | - - - - - -growup-core

                    | - - - - - -growup-war

      通过maven打包后出现growup-core依赖本地工程growup-api,growup-war也依赖了本地工程growup-api,但growup-war依赖的是本地仓库里的growup-core,而不是本地工程的growup-core。这时war包引用的是本地仓库里打好core的jar包,因此调试war包引用到core的class文件了。

      问题解决与定位:这里其实应该是两个问题,第一个问题是为什么依赖会出问题,依赖不了本地core子项目,第二个问题是怎么解决调试war包时调到core包的java文件而不是编译后的class文件。第二个问题是表象,我们可以通过添加源码解决,这个办法也适用于debug开源代码。日常的项目中,我们会导入一些依赖的开源jar包或者其他项目jar包,但并不会把整个项目导入到eclipse中来,因为我们只要引用而无需修改。但是调试的话会跳到被引用jar包里的class文件,要么是调试显示不了代码,要么显示的是class文件,格式怪异。为了解决这两个显示问题,只需要把源码导入到依赖路径中即可。如上面的问题,我只需要右击war包的项目 -> 点击Build Path -> Configure Build Path -> Java Build Path -> 点开Maven Dependencies -> 找到被引用的牛奶瓶,即core项目的jar包 -> 点开左边的箭头 -> 点击Source attchment -> 点Edit -> 选择该jar包所对应的源码包(这里是我本地工程core项目) -> 点OK。

      针对本问题,以上操作可以解决debug跳转到class文件显示奇怪的问题,但实际上治标不治本。为什么这么说呢?回到maven打包现象来,在打war包时core包是从仓库里下载的,说明它找不到本地项目,所以我特意去看了war包的pom文件:

            <dependency>
                <groupId>cn.wlf.wulinfeng</groupId>
                <artifactId>growup-core</artifactId>
                <version>0.4.0-SNAPSHOT</version>
            </dependency>

      然后我又看了core包的pom文件:

        <artifactId>growup-core</artifactId>
        <version>0.4.0</version>
        <packaging>jar</packaging>

      从版本号可以很明显的看出,这是两个core包。war包里依赖了的growup-core-0.4.0-SNAPSHOT,而本地的core打出来的叫growup-core-0.4.0,当然无法依赖了,所以它只能去仓库里下载growup-core-0.4.0-SNAPSHOT来依赖。上面解决第二个问题的做法实际上是把war包里依赖的growup-core-0.4.0-SNAPSHOT包的源码包设置未本地项目的growup-core-0.4.0而已。

      到这里解决第一个问题的办法一目了然:修改version一致,重新打包。

  • 相关阅读:
    VS2005入门.Net2.0系列视频教程181级打包下载
    Asp.Net2.0视频教程 之 WebPart概述 [视频]
    MemberShip,角色,WebPart在web.config文件中的参数简述
    vs2005入门 .Net2.0视频教程 之 SQL查询语法基础 [视频]
    关于进期教程发布事宜通告
    从我博客的访客地域分布分析看我国学.net的人
    《Vs2005网站编程》目录雏形
    Asp.Net2.0视频教程 之 WebPart 一 [视频]
    vs2005入门 .Net2.0视频教程 之 浅尝存储过程[视频]
    vs2005视频教程 之 TreeView高级使用 [视频]
  • 原文地址:https://www.cnblogs.com/wuxun1997/p/8269432.html
Copyright © 2011-2022 走看看