java - 使用maven在里面创建带有xml文件的jar文件
问题描述
所以我一直在尝试将项目部署为 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类。
所以我的问题是,有没有办法告诉 maven 在部署 jar 时不要删除文件(如果这就是发生的事情)?移动该 xml 文件的位置不是一种选择(或者至少我希望不这样做)
行家命令:
mvn clean deploy -U -Dmaven.test.skip=true -DaltDeploymentRepository=coolRepo::default::${REPO_LOCATION}
解决方案
将您的 .xml 文件放在 src/main/resources 中,而不是 src/main/java 中。推荐的方法是将它们保留在资源中。如果您仍然想将它们与 java 类一起保存,那么您必须明确告诉插件(您在 pom 中使用它来构建 jar)包含 xml 文件。
推荐阅读
- c# - 来自带有自定义 appsettings 的 appsettings 的 NLog
- javascript - 完成所有测试后,如何让赛普拉斯自动化发布完整的报告
- csvreader - CwvReader 不加载以 # 开头的行
- node.js - 在新的 mongoDB 对象中引用 S3 文件上传名称
- reactjs - 如何设置 ButtonGroup 的样式,使其不会通过在 React 中添加更多名称来改变表单的宽度?
- google-apps-script - 如果任何单元格的背景颜色不是白色,Google 脚本将返回 true
- html - 为什么我的标志和导航栏之间有巨大的可点击间隙以及如何摆脱它?
- html - Angular - 取消选择所有复选框
- powerbi - Power BI:更改地图视觉对象的筛选器上下文
- angular - 在延迟加载的角度组件中找不到 Dom 元素