最近对项目进行重构,期间解决了依赖冲突,将不必要的模块剔除,升级依赖版本等,做完这一切后整个项目目前运行还算正常,不过注意到使用Maven 打包的时候经常会出现如下告警:
1 2 3 4 5 6 [WARNING] Some problems were encountered while building the effective model for com.raysdata:traffic-search-server:war:1.3.0-SNAPSHOT [WARNING] 'dependencies.dependency.systemPath' for com.cloudera.impala.jdbc:hive_metastore:jar should not point at files within the project directory, ${project.basedir}/libs/hive_metastore.jar will be unresolvable by dependent projects @ line 26, column 25 [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. [WARNING] [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. [WARNING]
尽管这个告警对项目的打包、运行都不影响,但0 errors 0 warns应该是每个有洁癖的程序员都喜欢的吧,那就解决这个告警吧。 根据日志提示,应该是pom文件中的本地依赖${project.basedir}/libs/hive_metastore.jar之类的Impala 依赖造成的,面向Google编程了一会了找到了解决方案,先看看原来的pom.xml文件中的定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > hive_metastore</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${project.basedir}/libs/hive_metastore.jar</systemPath > </dependency > <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > hive_service</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${project.basedir}/libs/hive_service.jar</systemPath > </dependency > <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > ImpalaJDBC41</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${project.basedir}/libs/ImpalaJDBC41.jar</systemPath > </dependency > <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > ql</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${project.basedir}/libs/ql.jar</systemPath > </dependency > <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > TCLIServiceClient</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${project.basedir}/libs/TCLIServiceClient.jar</systemPath > </dependency >
根据警告信息提示,都是这些依赖出的问题,不过或许旧版本这么写完全没问题,但是现在大家都用的最新版的maven,所以这个错误应该是新版本带来的问题,将${project.basedir}修改为${pom.basedir}即可解决这个警告信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > hive_metastore</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${pom.basedir}/libs/hive_metastore.jar</systemPath > </dependency > <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > hive_service</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${pom.basedir}/libs/hive_service.jar</systemPath > </dependency > <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > ImpalaJDBC41</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${pom.basedir}/libs/ImpalaJDBC41.jar</systemPath > </dependency > <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > ql</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${pom.basedir}/libs/ql.jar</systemPath > </dependency > <dependency > <groupId > com.cloudera.impala.jdbc</groupId > <artifactId > TCLIServiceClient</artifactId > <version > ${impala.jdbc.version}</version > <scope > system</scope > <systemPath > ${pom.basedir}/libs/TCLIServiceClient.jar</systemPath > </dependency >
最终结果:
0 error(s), 0 warning(s)