2012-11-14 67 views
3

我需要在Maven/Nexus中存儲工件,但是當它被拉下時,最終不得有版本號。存儲沒有版本號的Nexus/Maven工件

在您抨擊我之前,請指出您對Oracle的憤怒。

我有comm.jar(Oracle通信端口驅動程序)。我已經把它放在我的聯繫服務器&中,結果爲comm-1.0.jar。但JAR包含以下代碼:

if(streamtokenizer.ttype == -3 
    && (i = streamtokenizer.sval.indexOf("comm.jar")) != -1) 

它的硬編碼使用自己的名字就知道在哪裏可以找到與它去配置文件。該jar被簽名,所以我無法對其進行更改。

所以...如何在Nexus中存儲jar並且沒有分機號碼?


這不是我的問題的確切答案,但它確實解決了我的問題。

我打電話給我的jar「comm.jar-1.0.2.jar」代碼在文件名中查找'comm.jar',所以現在找到它! 好的,所以這是一個巧克力,我很幸運,內部代碼只是尋找indexOf。但它的作品!

感謝大家對此的建議!

Jeff

+3

考慮我的愁容牢牢針對甲骨文。這是可怕的編碼! –

+2

我想這個問題是在運行時。所以它不會被剝奪,直到與你的應用程序部署,對吧?所以問題是你如何打包你的應用程序?這與瞭解IMO有關。 – maba

回答

4

這不是一個完整的答案,更多關於如何處理這個問題的想法集合。

我認爲你需要聲明你的依賴與版本號存在,以確保Maven很樂意解決這個工件並且構建它。所以,訣竅就是確保在您的成品中捆綁aritfact之前將其更名。

Maven dependency:copy-dependencies目標有一個stripVersion參數可能會有用。我懷疑你可以使用它來正確地重命名JAR,也許作爲程序集的一部分(確保依賴被移動到作爲類路徑一部分的目錄)。

但是,這樣的計劃很可能會破壞您的開發環境。也許你可以用正確的名字來欺騙一個JAR文件來解決這個問題?

+0

+1;版本剝離必須在捆綁時間進行。 – maba

+0

@maba關於避免開發環境破壞的任何想法? –

+0

這真的取決於用例。很難說沒有任何進一步的信息。 'comm。罐'是什麼我曾經不得不使用。 – maba

1

如果你想讓它與戰爭項目一起工作,那麼你可以使用File Name Mapping去除版本。

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.3</version> 
      <configuration> 
       <outputFileNameMapping>@{artifactId}@[email protected]{extension}@</outputFileNameMapping> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

相關的罐子會像平常一樣在WEB-INF/lib中結束,但現在沒有版本。

但是從你的問題很難告訴你的最終產品是什麼,戰爭,JAR,ZIP,...