java - 使用maven创建带有xml文件的jar文件

标签 java maven jar inputstream

所以我一直在尝试将项目部署为 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}

最佳答案

将 .xml 文件放在 src/main/resources 中,而不是放在 src/main/java 中。推荐的方法是将它们保留在资源中。如果您仍然想将它们与 java 类一起保留,那么您必须明确告诉插件(您在 pom 中使用它来构建 jar)包含 xml 文件。

关于java - 使用maven创建带有xml文件的jar文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52574747/

相关文章:

java - Split 函数返回 <Unmatched opening...> 错误

java - 如何在 Tomcat 中启用 Java 断言

Java Maven 与 DB2?

java - Eclipse:编译依赖应用程序时导出 JAR

java - 如何管理 jar 文件之间的依赖关系?

java - 序列化 hibernate 模型及其延迟加载对象

java - getnumberinstance 无法解析为类型

java - 如何将一个 Maven 项目用作另一个 Maven 项目的依赖项?

java - 使用 findBug 插件发现错误时如何使 Maven 构建失败

java - 找不到 org.apache.thrift7.TBase 类