Java 如何配置maven,使maven exec插件能够访问';之外目录中的配置文件;src/';
我正在使用访问代码中的属性文件Java 如何配置maven,使maven exec插件能够访问';之外目录中的配置文件;src/';,java,maven,classpath,executable-jar,exec-maven-plugin,Java,Maven,Classpath,Executable Jar,Exec Maven Plugin,我正在使用访问代码中的属性文件 ClassName.class.getClassloader().getResourceAsStream("config/config.properties")); 及 如果属性文件在resources目录中,那么一切正常,我使用maven exec插件运行程序,没有任何问题。我得打个电话 mvn exec:java -Dexec.mainClass="MyMainClass" 但这种方法有一个很大的缺点。它包括属性文件 如何更改maven配置
ClassName.class.getClassloader().getResourceAsStream("config/config.properties"));
及
如果属性文件在resources目录中,那么一切正常,我使用maven exec插件运行程序,没有任何问题。我得打个电话
mvn exec:java -Dexec.mainClass="MyMainClass"
但这种方法有一个很大的缺点。它包括属性文件
如何更改maven配置,使“config/config.properties”文件对maven exec插件可用,而不在“src”内部,也不包含在jar中
注意:我只是想澄清一下,我不知道应用程序在生产环境中运行时所需的配置文件在哪里。我只知道它在类路径中。这就是为什么我需要使用
getResourceAsStream()
,并且我不需要将其包含在jar文件中。如果使用getClassloader().getResourceAsStream()
则表示您正试图访问类路径上可用的文件。但是,您引用的文件不在类路径上。因此,您必须选择:
- 将配置文件夹添加到类路径。您可以通过向
添加pom.xml
来实现这一点,但效果与使用
完全相同src/main/resources/config/config.properties
- 不要从类路径文件中读取属性,而是从已知位置的文件中读取属性。这将是我首选的解决方案。对于这个解决方案,我想参考另一个链接。在您的例子中,您可以将其作为参数添加,从
中选取它。或者从公共静态void main(String[])
中读取它,因为它是相对于执行根计算的新文件(“config/config.properties”)
resources
标记并不能阻止配置文件包含在jar中。并且使用file()
无法访问类路径,这就是我首先使用getResourceAStream()
的原因。确切地说,您必须在这两者之间进行选择:类路径资源或文件。但是,如果您有一个pom.xml
,那么还有第三个选项:这正是我的问题->“如何配置maven,以便maven exec插件可以访问'src/'之外目录中的配置文件?”您不配置maven,只配置插件:我认为允许它引用文件夹,因此,请尝试:config,现在只从类路径中读取'config.properties'。最后,执行java可执行文件(通过向命令行添加-X可见)。请阅读类路径规范。也许你可以在没有Maven的情况下先尝试一下,以确保这是可能的。
mvn exec:java -Dexec.mainClass="MyMainClass"