使用maven在里面创建带有xml文件的jar文件
create jar file with xml file inside using maven
所以我一直在尝试将项目部署为 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 时它没有显示错误,但是当我尝试 运行 项目 A 并将 jar 作为依赖项时,我得到
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 class。
所以我的问题是,有没有办法告诉 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 class 一起保存,那么您必须明确告诉插件(您在 pom 中使用它来构建 jar)包含 xml 文件。
所以我一直在尝试将项目部署为 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 时它没有显示错误,但是当我尝试 运行 项目 A 并将 jar 作为依赖项时,我得到
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 class。
所以我的问题是,有没有办法告诉 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 class 一起保存,那么您必须明确告诉插件(您在 pom 中使用它来构建 jar)包含 xml 文件。