【问题标题】:create jar file with xml file inside using maven [duplicate]使用maven在里面创建带有xml文件的jar文件[重复]
【发布时间】:2019-03-05 14:20:18
【问题描述】:

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

【问题讨论】:

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

标签: java maven jar inputstream


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-28
    • 2011-05-14
    • 2020-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 2012-01-24
    • 2016-09-05
    相关资源
    最近更新 更多