簡體   English   中英

有沒有一種簡單的方法可以在surefire-plugin測試類路徑上添加jar

[英]Is there an easy way to add jars on surefire-plugin test classpath

有這個屬性additionalClasspathElements但不幸的是它不處理帶有jar的目錄

這個問題真的很難處理......發生在我身上的唯一方法是創建一個准備類路徑的mojo,但我不知道接下來會發生什么

在我的pom定義中創建175個jar的列表看起來很有趣。在additionalClasspathElements中它將是525行

我需要啟動一個巨大的項目,即不使用maven。 由於175 libs的版本兼容性,聲明它們幾乎是不可能的。 Imho直接從項目的類路徑加載它們是唯一的方法

首先,使用通配符制作類路徑:

<additionalClasspathElements>
    <additionalClasspathElement>
        /path/to/lib/*.jar
    </additionalClasspathElement>
</additionalClasspathElements>

您必須使用以下屬性:

<useManifestOnlyJar>false</useManifestOnlyJar>  
<useSystemClassLoader>false</useSystemClassLoader>

因為,看看ForkConfiguration.java:

if ( useManifestOnlyJar )
{
    File jarFile;
    try
    {
        jarFile = createJar( classPath );
    }
    catch ( IOException e )
    {
        throw new SurefireBooterForkException( "Error creating archive file", e );
    }

    cli.createArg().setValue( "-jar" );

    cli.createArg().setValue( jarFile.getAbsolutePath() );
}
else
{
    cli.addEnvironment( "CLASSPATH", StringUtils.join( classPath.iterator(), File.pathSeparator ) );

    final String forkedBooter = ForkedBooter.class.getName();

    cli.createArg().setValue( shadefire ? new Relocator().relocate( forkedBooter ) : forkedBooter );
}

您希望將類路徑連接並附加到CLI,而不是僅顯示JAR ...

這應該適用於簡單的依賴項。 但是如果你想要啟動一些大的東西,使用類加載器,我會推薦一些bmargulies做的。 因為你會打那個堅硬的imho :-) 看到這里為什么

為了獲得靈感, 我編寫了一個依賴安裝程序 ,它將jar安裝到本地maven資源庫並生成包含所有這些依賴項的pom定義,以便您可以將自己用作依賴項(將所有依賴項放在類路徑上 - 傳遞依賴項)...最好的方法去imho。 它是一個非常通用的Mojo,它不必在Liferay上使用。 你只需要玩一點。

編寫一個shell腳本,遍歷所有這些jar,使用偽造的groupId,artifactId和version調用mvn install:install-file。

使用<scope>test</scope>使shell腳本為所有這些元素寫出Maven <dependency/>元素的XML。

將生成的XML blob插入到POM中。

退后。

暫無
暫無

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

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