2011-11-27 76 views
0

目前,我建立了一個集成測試套件。基礎是一個Maven項目,其中包含幾個模塊,這些模塊相互依賴以建立數據庫,將一些數據放入並在其上運行測試,然後將所有內容都包裝起來。另外,我有模塊,裏面有一些實用程序和測試數據。Maven:使用外部庫進行集成測試

第一步(上面沒有提到)是壓縮圖像的副本,其中包含大量組成要測試的軟件套件的JAR文件。不幸的是,這個軟件不是由Maven構建的,而是由Ant構建的,所以我無法在Artifactory或類似的東西中找到這些東西。

我現在的問題是,我用集成測試方法複製和解壓縮圖像,但我不知道,我如何將JAR文件添加到Maven類路徑中。所有其他模塊需要編譯並運行從ZIP文件中提取的jar文件。

如何將JAR添加到Maven類路徑以供以後編譯和測試運行? ZIP內容的目標始終是相同的目錄。不幸的是,JAR的名稱包含版本信息(內部版本號)發生變化。因此,系統和標籤的簡單使用並不那麼容易。像$ {package.path}/lib/* / .jar這樣的路徑條目會很棒。有沒有插件,也許?

或者沒有人有更好的想法來建立一個針對預構建JAR的集成測試嗎?

+0

你有沒有想過在Ant腳本中使用[Ivy](http://ant.apache.org/ivy/)發佈到Artifactory? – McDowell

回答

1

從您的所有依賴項創建一個jar,所有內容都在${package.path}/lib/*/.jar

您可以在運行maven之前或作爲maven構建的一部分使用ant任務來創建此jar。

要合併罐子,您可以使用Ant Jar Task(請參閱合併存檔)。從那裏:

<jar destfile="build/main/checksites.jar"> 
    <fileset dir="build/main/classes"/> 
    <restrict> 
    <name name="**/*.class"/> 
    <archives> 
     <zips> 
     <fileset dir="lib/main" includes="**/*.jar"/> 
     </zips> 
    </archives> 
    </restrict> 
</jar> 

這將創建一個jar文件,它將lib/main中所有jar文件中的所有類嵌入。

然後你可以使用系統作用域,這個作用域在maven中是正常的。注意:如果你在maven(通過ant)中創建jar,那麼你應該在目標中創建jar,以便正確清理它。

從Maven的使用Ant構建文件,你可以使用maven antrun plugin,類似於:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 

    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <tasks> 
        <property name="local.project.artifact.name" value="${project.build.finalName}" /> 
        <property name="local.distribution.artifact.name" value="${local.project.artifact.name}-distribution" /> 
        <property name="local.distribution.artifact.file" value="${project.build.directory}/${local.distribution.artifact.name}.zip" /> 
        <ant antfile="build-deploy.xml" /> 
       </tasks> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

這運行在封裝階段Ant構建文件build-deploy.xml。您的系統所需的修改僅作爲讀者的練習:-)。

+0

不錯的想法,其實。目前情況的問題是,我在JAR文件中會有相互覆蓋的文物。這不起作用。另一方面,只要jar文件不存在,Maven就會抱怨並且不會啓動。這又是同樣的問題:如何在Maven運行期間更改類路徑? –

+0

即使您將其作爲流程資源或驗證階段的一部分來執行,它也會抱怨嗎? –

+0

哦,你是對的。 Maven Eclipse插件正在抱怨,但命令行工具不會直到進程資源。這是一個好兆頭。我添加了Ant任務,並且我得到了一個龐大的ZIP文件,我在過程資源階段將Maven作爲依賴關係運行。但是類路徑仍然不起作用。我認爲有一個失蹤或某事。你有好主意嗎?編譯階段不成功...... ;-) –

相關問題