Java 使用maven创建包含xml文件的jar文件

Java 使用maven创建包含xml文件的jar文件,java,maven,jar,inputstream,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.getClassLoad

因此,我一直在尝试将项目部署为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文件的位置不是一个选项(或者至少我不希望这样做)

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文件。

请发布您的pom文件(特别是您用于创建jar的插件配置),您可能必须在构建jar时特别包含.xml文件。由于您已将.xml文件放在src/main/java中,因此它不会自动打包。如果您将其放在src/main/resources下,那么它将自动包含在内。