从Maven项目的角度来看,存储在那里的文件是应该以任何特殊方式访问还是被视为“资源”只是另一个目录的任何其他文件?
是什么让这个目录特别?是否公平地说“资源”是一个不是源文件并由程序使用的东西?
我在这里有点困惑。请清楚
答案 0 :(得分:4)
资源目录中的所有文件都会被添加到jar(或war)而不进行编译。通常,配置文件或其他非源资源等内容都放在此目录中,但只要您的文件不以“.java”结尾,它们就可以存在于sources目录中,并且生成的工件也是相同的。
要访问资源目录中的文件,您可以使用ClassLoader.getResource或getResourceAsStream方法。
使用Maven时资源的另一个特性是,您可以包含属性标记,这些标记将被Maven替换为构建项目的一部分。例如:
资源文件中的这一行
artifactName=${project.build.finalName}
将替换为:
artifactName=my-project-1.0.0
Maven中可用的任何属性都可以在您的资源中替换。
答案 1 :(得分:2)
这只是一个标准。默认情况下,资源目录的内容将复制到与.class文件相同的目标目录,如果打包为jar,则复制到jar的根目录中。
您还可以指定资源的编码方式。如果不这样做,则可以有效地保留您构建的系统的编码,这是不可移植的,Maven会警告您。