maven-resources-plugin為官方提供的用于資源文件拷貝概行,占位符轉(zhuǎn)換等功能的插件笼吟。
在pom文件中,project/build/resources/resource用于指定需要拷貝和轉(zhuǎn)換的配置文件。不寫的話默認(rèn)的資源文件位置為pom文件所在文件夾下的src/main/resources文件夾下所有的文件偷溺。當(dāng)執(zhí)行資源文件拷貝時(shí),會(huì)將資源拷貝到target/classes下悴势,與類文件同一級(jí)目錄窗宇。
project/build/resources/resource/directory為自定義配置的資源文件目錄,如為src/main/resources特纤,這個(gè)是maven的默認(rèn)值军俊。resources標(biāo)簽下可以提供多個(gè)resource,用于配置多個(gè)資源目錄捧存。project/build/resources/resource/excludes/exclude用于排除指定的文件/文件夾粪躬,如<exclude>dev/ </exclude> <exclude>test/ </exclude> <exclude>prod/ </exclude>,此時(shí)配置的目錄dev必須是相對(duì)于resource/director中的目錄昔穴,否則失效镰官。配置了exclude后,該資源文件將不會(huì)被拷貝到target/classes以及打包的包中吗货。
也可以指定只導(dǎo)入某些資源文件泳唠,使用project/build/resources/resource/includes/include來設(shè)置只導(dǎo)入哪些資源文件。
如果想要拷貝的資源文件的占位符被自動(dòng)占位宙搬,必須將project/build/resources/resource/filtering設(shè)置為true笨腥。在資源文件中可以直接使用${參數(shù)名}或@參數(shù)名@的格式設(shè)置占位。maven可以自動(dòng)解析pom文件下properties/自定義標(biāo)簽 的值勇垛。也可以解析指定的.properties配置文件中的值(稍后介紹)脖母。
maven解析占位時(shí)如何通過讀取指定的.properties文件來為資源文件占位?可以通過project/build/filters/filter配置的指定資源文件來獲取占位值闲孤。如<filter>src/main/resources/dev/conf.properties</filter>谆级,其中conf.properties有spring.redis.port=6379。那么在資源文件中崭放,如application.properties中就可以直接使用xxx=@spring.redis.port@ 來獲取指定配置文件中的值哨苛。
在多環(huán)境中,project/profiles/priofile可以配置多個(gè)币砂,每個(gè)profile必須有唯一id建峭,project/profiles/priofile/id,在project/profiles/priofile中可以配置properties/自定義標(biāo)簽决摧,在pom文件以及資源文件中可以直接讀取(前提是該profile為當(dāng)前激活的環(huán)境)亿蒸。通過profile凑兰,就可以通過指定的profile id來打包指定的包了。如在project/profiles/priofile/properties有自定義的標(biāo)簽<env.name>dev</env.name>边锁,那么在project/build/filters/filter中就可以使用如<filter>src/main/resources/${env.name}/conf.properties</filter>來獲取指定配置文件姑食,然后為其他資源文件占位。