有什麼辦法在Maven中的父項目的模塊之間共享資源?例如,我想爲多模塊Maven項目中的所有模塊指定一個log4j.properties文件。在多模塊maven項目中指定公共資源
通常,我使用Eclipse IDE通過選擇常規項目來創建父項目,然後通過指定pom
的包裝將其轉換爲Maven項目。這創建了一個「乾淨」的項目結構,沒有src
等文件夾。我想知道這種共享資源應該放在哪裏。
EDIT1:我想把公共資源放在父項目中。
有什麼辦法在Maven中的父項目的模塊之間共享資源?例如,我想爲多模塊Maven項目中的所有模塊指定一個log4j.properties文件。在多模塊maven項目中指定公共資源
通常,我使用Eclipse IDE通過選擇常規項目來創建父項目,然後通過指定pom
的包裝將其轉換爲Maven項目。這創建了一個「乾淨」的項目結構,沒有src
等文件夾。我想知道這種共享資源應該放在哪裏。
EDIT1:我想把公共資源放在父項目中。
我會創建一個額外的「基本」模塊(項目),打包「jar」,其中包含公共資源src/main/resources
。然後我會讓其他模塊依賴於該項目。現在他們在他們的類路徑中看到了公共資源。
Antoher的可能性是使用遠程資源包。你可以在父項目中配置它。在這個例子中,我想複製一些文件來測試。如果你使用這個,你將需要在另一個項目中創建這個包。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-remote-resources-plugin</artifactId>
<version>1.5</version>
<configuration>
<resourceBundles>
<resourceBundle>es.sca:myBundle:1.0.0</resourceBundle>
</resourceBundles>
<attachToMain>false</attachToMain>
<attachToTest>true</attachToTest>
<appendedResourcesDirectory>${basedir}/src/test/resources</appendedResourcesDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
</execution>
</executions>
</plugin>
你能分享「你如何訪問共享資源」的代碼片段嗎? –
我設法它像這樣工作:
我創建一個項目/封裝/測試/資源/ META-INF/persistence.xml文件,並加入到我的pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-test-persistence-xml-resources</id>
<phase>process-test-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>src/</outputDirectory>
<resources>
<resource>
<directory>${project.parent.basedir}/assembly/</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
這不會工作,是非常糟糕的做法。 – Anony
是,它似乎一個可能的解決方案。但我感興趣的是, 是否可以在父項目中指定這些資源(不包括 引入附加模塊),因爲父項目指定所有 共同的依賴關係和子模塊 的Maven配置,我認爲父項目是最適合的地方 也用於共同資源。
在包裝類型POM,當目標包規定來管理您的共享資源,只需添加下一個(查看文件夾)到構建POM文件的部分的情況下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-config-files</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/logconfig</outputDirectory>
<resources>
<resource>
<filtering>false</filtering>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
是,這似乎是一個可能的解決方案。但我有興趣是否可以在父項目中指定這些資源(不需要引入額外的模塊),因爲父項目指定了子模塊的所有常見依賴項和Maven配置,我認爲父項目是最合適的地方也用於共同資源。 – jilt3d
「pom」包裝的父項目沒有任何資源,它只是一個構建文件,可以作爲工件進行安裝/部署。 –
我明白了。所以用Maven父項目做這件事是不可能的? +1,但如果還有其他建議,我將暫時解決問題。 – jilt3d