2012-05-02 48 views
0

我有一些在Maven中安裝的外部配置(XML文件)。我需要將它們放在我的測試類路徑中,但它們沒有出現。XML maven工件不在類路徑上

他們必須保持爲XML,我無法將它們打包一個Jar內 - 但我願意去嘗試別的爲此,自定義插件等

(請不要告訴我,Maven是隻對瓶 - 這是不正確的(如果你提供一個參考駁,我可以向你保證,這是外的日期/誤傳)

的依賴是這樣規定的:

<dependency> 
     <groupId>some.group</groupId> 
     <artifactId>some.artifact</artifactId> 
     <version>${project.version}</version> 
     <scope>test</scope> 
     <type>xml</type> 
     <classifier>some.classifier</classifier> 
    </dependency> 

這些XML文物已經。由build-helper插件創建(所以沒有1- 2-1與他們的項目的POM)。

我唯一的當前hacky解決方案是檢查M2_HOME屬性並從那裏加載文件(因爲它們被定義爲Maven確實將它們拉下來的依賴關係) - 但我對此並不滿意。

編輯:下一個最好的hack可能是使用maven-dependency-plugin將它們複製到輸出目錄(target/classes)。如果我的配置適用於Jars,那麼這個味道就像一個Maven bug。

編輯2:@khmarbaise要求構建輔助性插件配置:

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>build-helper-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>attach-artifacts</id> 
        <phase>package</phase> 
        <goals> 
         <goal>attach-artifact</goal> 
        </goals> 
        <configuration> 
         <artifacts> 
          <artifact> 
           <file>target/classes/ddl-seed.xml</file> 
           <type>xml</type> 
           <classifier>ddl-seed</classifier> 
          </artifact> 
          <!-- ... more definitions --> 

這將生成所有XML工件正確的Maven的元數據local.xml中的數據。

+0

您可以顯示您創建XML工件的pom嗎?你提到了構建助手maven插件,但是如何? – khmarbaise

+0

@khmarbaise編輯的問題,以包括配置,但我懷疑是否有任何問題,因爲Maven能夠解決的XML文件作爲依賴,它只是不把它們放在類路徑 – earcam

+0

問題是爲什麼你不喜歡把它們放進一個罐子裏? – khmarbaise

回答

0

不幸的是,我找不到強制maven將指定的測試依賴項添加到測試類路徑中的方法,除了將此測試依賴項複製到測試類路徑上的目錄之外。

這似乎是最快捷的方式(它是爲了測試依賴),避免了任何JAR的創建。

  <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>unpack</id> 
        <phase>generate-test-resources</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <artifactItems> 
          <artifactItem> 
           <groupId>com.acme.gid</groupId> 
           <artifactId>com.acme.aid</artifactId> 
           <version>${project.version}</version> 
           <classifier>ddl</classifier> 
           <type>xml</type> 
           <outputDirectory>${project.build.directory}/test-classes</outputDirectory> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
相關問題