所以我一直试图将一个项目部署为jar,它需要以这种方式读取文件:
private static final String DEFAULT_PATH = "org/some/thing/cool/necesaryFile.xml";
public void readSomeFile() {
InputStream is = null;
try {
ClassLoader classLoader = SomeOtherClass.class.getClassLoader();
is = classLoader.getResourceAsStream(DEFAULT_PATH);
}
catch (IOException e) {
e.printStackTrace();
}
finally {
safeClose(is);
}
}
public static void safeClose(InputStream is) {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我已经在Eclipse中测试了它,并且效果很好!调试中,我看到了路径,根本没有问题! 当我使用maven部署jar时,它没有显示任何错误,但是当我尝试将jar作为依赖项运行项目A时,我得到
java.lang.IllegalArgumentException: InputStream cannot be null
并检查项目A中的jar,我找不到部署之前的 necesaryFile.xml 。
xml文件的路径如下:
C:/coolUser/workspace/src/main/java/org/some/thing/cool/necesaryFile.xml
因此它位于带有某些Java类的 cool 包中。
所以我的问题是,有没有办法告诉Maven在部署jar时不要擦除文件(如果甚至发生了什么)?移动该xml文件的位置不是一种选择(或者至少我希望不要这样做)
maven命令:
mvn clean deploy -U -Dmaven.test.skip=true -DaltDeploymentRepository=coolRepo::default::${REPO_LOCATION}
答案 0 :(得分:1)
将.xml文件放置在src / main / resources中,而不是src / main / java中。推荐的方法是保留它们在资源中。如果仍然希望将它们与java类一起使用,则必须明确告诉插件(在pom中用于构建jar的插件)以包含xml文件。