簡體   English   中英

如何在 Maven 中不使用 Nexus 在本地導入庫?

[英]How can I import libraries locally without using Nexus in Maven?

我的 Maven 項目提到的 Nexus 位於另一台服務器上,這有一些限制。 問題是我必須將一些 Java 庫導入到我的項目中,由於其限制,Nexus 無法下載。 我的目標是在本地導入這些庫,從而避免使用 Nexus。 如果有人知道任何替代方案,我願意接受新的提議。

我唯一的嘗試是使用 Maven 導入這些庫,后者又使用這些服務器的 Nexus,但這是不可能的,因為它們有一定的網絡限制。 這些庫是:

     import oracle.xml.parser.schema.*;
     import oracle.xml.parser.v2.*;

但我在嘗試什么?

我提供了 function,它使用 XSD 模式驗證 XML 文件。 但是當調用 function 時會拋出錯誤,因為不允許導入庫。

import oracle.xml.parser.schema.*;
import oracle.xml.parser.v2.*;

import java.net.*;
import java.io.*;
import org.w3c.dom.*;
import java.util.*;
import java.sql.SQLException;

/**
*
* Clase de utilidad para el tratamiento de XML.
* class SIXUtil 
* author Ibermática
* date Diciembre 2008
*
*/

public class SIXUtil
{
   public static String validarXmlSchema(oracle.sql.CLOB xml, 
   oracle.sql.CLOB xsd) throws Exception 
   {
     XSDBuilder builder = new XSDBuilder();

     XMLSchema schemadoc = 
     (XMLSchema)builder.build(xsd.getAsciiStream(),null);      

     DOMParser dp  = new DOMParser();
     dp.setXMLSchema(schemadoc);
     dp.setValidationMode(XMLParser.SCHEMA_VALIDATION);
     dp.setPreserveWhitespace (true);      

     StringWriter sw = new StringWriter();
     dp.setErrorStream (new PrintWriter(sw));      

     try 
     {
       dp.parse (xml.getAsciiStream());
     }
     catch (XMLParseException pe) 
     {
       sw.write(pe.getMessage());
     }
     catch (Exception e) 
     { 
       sw.write("Error inesperado: " + e.getMessage()); 
     }

       return sw.toString();      
     }
  }
  /

我希望在本地導入使用 Nexus 的庫。

您可以通過將這些 jars 放在項目的 lib 文件夾中並將其配置為系統依賴項來使用它們

<dependency>
  <groupId>com.ext</groupId>
  <artifactId>dependency</artifactId>
  <scope>system</scope>
  <version>1.0</version>
  <systemPath>${basedir}\war\WEB-INF\lib\extDependency.jar</systemPath>
</dependency>

對我來說,有兩種方法可以做同樣的事情(更多細節在這里

首選:

mvn install:install-file \
   -Dfile=<path-to-file> \
   -DgroupId=<group-id> \
   -DartifactId=<artifact-id> \
   -Dversion=<version> \
   -Dpackaging=<packaging> \
   -DgeneratePom=true

其中每個指的是:

:要加載的文件的路徑,例如 → c:\kaptcha-2.3.jar

: 文件應該注冊的組,例如 → com.google.code

: 文件的工件名稱,例如 → kaptcha

:文件的版本,例如 → 2.3

: 文件的包裝 eg → jar

不太喜歡:

我不喜歡這個的原因是因為這會將你的 pom.xml 綁定到你的本地機器路徑,一旦你把這個 pom.xml 放在代碼庫中,每個人都綁定到相同的路徑,如果另一個人可以訪問 nexus /maven 倉庫

<dependency>
  <groupId>com.somepackage</groupId>
  <artifactId>artifact-name</artifactId>
  <scope>system</scope>
  <version>1.0</version>
  <systemPath>path to your jar</systemPath>
</dependency>

暫無
暫無

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

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