2016-08-30 106 views
1

我想通過Maven在我的項目中包含LWJGL。我得到了.jar文件,但本機不在類路徑中。Maven將本地庫添加到庫路徑

在谷歌的幫助下,我發現我應該使用mavennatives來自動提取和複製本地人。但mavennatives只能找到以native-開頭的本地人,而LWJGL本地人都有名稱,如{artifactId}-{version}-natives-{os}.jar

問題:我如何讓Maven導入具有正確名稱的依賴項並提取這些本地文件?

pom.xml

<project ... > 
    ... 
    <build> 
     <plugins> 
      ... 
      <plugin> 
       <groupId>com.googlecode.mavennatives</groupId> 
       <artifactId>maven-nativedependencies-plugin</artifactId> 
       <version>0.0.7</version> 
       <executions> 
        <execution> 
         <id>unpacknatives</id> 
         <goals> 
          <goal>copy</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 

    <dependencies> 
     ... 
     <dependency> 
      <groupId>org.lwjgl</groupId> 
      <artifactId>lwjgl</artifactId> 
      <version>3.0.0a</version> 
     </dependency> 
     <dependency> 
      <groupId>org.lwjgl</groupId> 
      <artifactId>lwjgl-platform</artifactId> 
      <version>3.0.0a</version> 
      <classifier>natives-linux</classifier> 
     </dependency> 
     <dependency> 
      <groupId>org.lwjgl</groupId> 
      <artifactId>lwjgl-platform</artifactId> 
      <version>3.0.0a</version> 
      <classifier>natives-windows</classifier> 
     </dependency> 
    </dependencies> 
</project> 

回答

0

official documentation的插件:

這個插件解壓與natives-開始分類每個依賴。

這正是你的使用情況,該文檔指向classifier元素,而你的情況是natives-linuxnatives-windows

Accordingo該文件,論文例將被處理:

這是缺省值,使separateDirs當插件將解包每個固有依賴性命名像它的分類器nativesTargetDir的子目錄(例如:natives-windows會去target/natives/windows

事實上,整個圖書館的罐子是在{artifactId}-{version}-natives-{os}.jar形式,而是以Maven的分類是完全{version}和文件的擴展名之間的字符串:在這種情況下natives-{os},其開始於natives,並且由庫處理。

+0

好吧,這是否意味着它應該按照我設置的方式工作?但爲什麼它不工作呢? – danielspaniol

+0

你是如何調用maven的?你看到插件作爲你的構建的一部分執行嗎? –

+0

我在intellij中使用它。但是當我只運行Maven-Build時,插件沒有執行......單獨執行插件也有幫助 – danielspaniol