[英]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.