发表于: 2017-06-19 15:30:45

5 1540


今天完成的事情:

1、测试一个RMI服务,

现在我想把一个 studentService 分离为rmi服务。

在原有的项目中,如果作为服务端的studentService和其实现类studentServiceImpl 不在同一个项目中的话。

在客户端运行作为代理bean的studentService时,会报 connectionRefused 错误。


2、学习并配置nginx跨域。

3、尝试解决maven冲突。
明天计划的事情:

1、申请进复盘项目。 
遇到的问题:

1、公司的自动代码生成项目:commons-code-demo 的 ExcelDocTest 类的main方法、在运行时依然会报错。


百度了一下之后,我觉得这可能是 maven 依赖冲突所产生问题、但我又对什么是 jar 包冲突没啥概念。

http://blog.csdn.net/ksgt00016758/article/details/26680233

找了一个教程学习如何解决 maven 依赖冲突。

首先从下载demo。

这个demo演示了由于maven的“最近获胜策略(nearest wins strategy)”所导致的冲突。

如上图所示,现在有一个web应用reslove-web,

该工程依赖于project-A 和 project-B,

——project-A依赖于project-common1.0版本并调用其中的sayHello()方法。

——project-B依赖于project-C,

————而project-C又进一步依赖于project-common2.0版本并调用其中的sayGoodBye()方法。

project-common的1.0和2.0版本是不同的,1.0中包含sayHello()方法。

而2.0中包含了sayHello()和sayGoodBye()两个方法。

下载demo之后,必须根据依赖关系、依次执行mvn install生成所有工程的jar包。

project-common的项目只有一份。如何使它产生1.0和2.0两个版本的jar包呢?

在project-common目录下运行“mvn clean install”后会生成1.0的jar包。

之后代码中添加一个sayGoodBye方法、到pom中将版本改为2.0、再次运行“mvn clean install”。

便生成了2.0包。

此时去本地仓库会发现project-common 有了1.0和2.0的jar包。

然后依次对project-A,project-c,project-B执行install命令。

现在我们查看一下idea生成的maven依赖图:

可以明显看到project-C项目与它所依赖的project-common 2.0 由一条红线连接,且2.0版本上又有一条红虚线指向了project-common 1.0上。(红线可不是我画的)

此时我们在resolve-web根目录执行

mvn clean verify org.codehaus.cargo:cargo-maven2-plugin:run

使这个web项目在web容器中跑起来,我们打开“localhost:8080/resolve-web/hello”,

----------------------------------------------------------------------------------------------------------------------------

再打开“localhost:8080/resolve-web/goodBye”,报错:NoSuchMethodError。


所以,resolve-web分明引用的有goodbye方法的project-common 2.0、在最终执行时却报错没有这个方法、引用了1.0的版本。

如何解决呢?办法一:

在resolve-web中加入对project-c 2.0的依赖。

<dependency>

     <groupId>project-common</groupId>

     <artifactId>project-commmon</artifactId>

     <version>2.0</version>

   </dependency>

resolve-web直接加入 对project-c 2.0的依赖 后,maven依赖图也发生了变化。


办法二:
esolve-web对project-A的dependency声明中,将project-common排除掉。在resolve-web的pom.xml文件中修改对project-A的dependency声明。

现在貌似是把maven冲突是怎么回事给搞明白了。

再回到common-code-demo项目,打开它的maven依赖图,发现是这样的。

看的眼花,需要再花点时间研究。

收获:

1、又掌握了一点maven的规律。



返回列表 返回列表
评论

    分享到