【发布时间】:2014-06-04 04:59:46
【问题描述】:
我有一个在 Jenkins CI 服务器上构建的多模块 Maven 项目。其中一个模块有一些代码需要打开并扫描其他模块生成的jar。
代码从类路径中识别 jar 路径并使用JarInputStream 打开它。
jarFile = new JarInputStream(new FileInputStream(jarPath));
JarEntry jarEntry = jarFile.getNextJarEntry();
此代码是从单元测试中调用的。包含此代码的模块依赖于其他模块,因此它是最后构建的。
此代码在两个不同开发系统的命令行中成功构建。 我的开发箱运行 Maven 3.2.1,Jenkins 构建服务器有 Maven 3.0.4。
在 Jenkins 上,代码编译成功并运行其他测试,这表明 jar 在类路径中可用。但是,当测试尝试打开 jar 时,我得到 FileNotFoundException
java.io.FileNotFoundException: /var/lib/jenkins/workspace/project1%20-%20review/project1/target/project1-0.6-SNAPSHOT.jar (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileInputStream.<init>(FileInputStream.java:101)
该文件实际上存在于工作区中,因为我可以在 Jenkins Web 界面中看到它。
【问题讨论】:
-
先构建哪个模块?
-
你的詹金斯盒子和你的开发盒子上的maven版本是什么。
-
@JigarJoshi 我更新了问题,它们相互依赖。
-
@JohnFarrelly 3.2.1 和 3.0.4(我更新了问题)
-
如果文件存在,你能在磁盘上失败后立即检查吗