簡體   English   中英

如何編寫maven build來為classpath添加資源?

[英]How can I write maven build to add resources to classpath?

我正在使用帶有簡單maven安裝的maven構建一個jar。 如果我將一個文件添加到src/main/resources它可以在類路徑中找到但是它有一個config文件夾,我希望該文件可以去,但是在config文件夾中移動它會使它從類路徑中消失。

將配置文件放入src / main / resources子文件夾的更簡潔的替代方法是增強類路徑位置。 使用Maven非常容易。

例如,將屬性文件放在新文件夾src / main / config中 ,並將以下內容添加到您的pom中:

 <build>
    <resources>
        <resource>
            <directory>src/main/config</directory>
        </resource>
    </resources>
 </build>

從現在開始, src / main / config下的每個文件都被認為是類路徑的一部分(請注意,如果需要,可以從最終的jar中排除其中的一些:只需添加構建部分:

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <configuration>
                <excludes>
                    <exclude>my-config.properties</exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>

這樣當您從IDE運行應用程序時,可以在類路徑中找到my-config.properties ,但在最終分發版中將保留在jar外部。

如果在src/main/resources目錄中放置任何內容,則默認情況下它將以最終的*.jar結尾。 如果您從其他項目引用它並且在類路徑中找不到它,那么您會遇到以下兩個錯誤之一:

  1. *.jar未正確加載(可能是路徑中的拼寫錯誤?)
  2. 您沒有正確地處理資源,例如: /src/main/resources/conf/settings.properties在類路徑上看作classpath:conf/settings.properties
By default maven does not include any files from "src/main/java". 
You have two possible way to that.
  1. put all your resource files (different than java files) to "src/main/resources" - this is highly recommended  
  2. Add to your pom (resource plugin):

 <resources>
       <resource>
           <directory>src/main/resources</directory>
        </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
  </resources>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM