使用Maven在XML文件中创建jar文件

时间:2018-09-30 04:52:11

标签: 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}

1 个答案:

答案 0 :(得分:1)

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