maven将第三方依赖_如何将商业第三方文物整合到您的Maven版本中
maven將第三方依賴
 根據ZeroTurnaround的RebelLabs最近進行的一項調查 ,Maven仍然是領先的Java構建平臺。 根據RebelLabs,當前的市場份額分布是: 
- Maven的64%
- 螞蟻+常春藤與16.5%
- Gradle與11%
但是,與此同時,Maven經常因其晦澀和干擾而受到批評。 與亞軍Ant和Gradle相比,Maven在解釋和自定義適應構建模型方面僅具有很小的靈活性。 就像Data Stax的Tim Berglund所說的那樣:
但是,讓我們開個玩笑,看看一個現實世界中的問題:
整合第三方商業物品
Maven Central并非免費提供您要依賴的所有第三方人工制品。 商業JDBC驅動程序或商業jOOQ版本就是這樣的例子。 基本上有三種方法可以將這些偽像集成到您的構建中:
快速而骯臟
通常,您只需要對小型測試項目或演示具有商業依賴性。 您想確保它在運行時可以正常運行,而不必依賴于本地存儲庫設置或網絡連接。 這是<scope>system</scope>的好用例:
例如:jOOQ
<dependency><groupId>org.jooq</groupId><artifactId>jooq</artifactId><version>${jooq.version}</version><scope>system</scope><systemPath>${basedir}/lib/jooq-${jooq.version}.jar</systemPath> </dependency>例如:Microsoft SQL JDBC
<dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>sqljdbc4</artifactId><version>3.0</version><scope>system</scope><systemPath>${basedir}/lib/sqljdbc4.jar</systemPath><!-- Notice that we can still put "optional"on commercial JDBC driver dependencies --><optional>true</optional> </dependency>這種方法的優點
當您要擁有一個本地的,自包含的模塊,該模塊可以保證在從源代碼管理中檢出后立即運行,而無需進行額外的配置和設置,這確實是一個非常簡單的解決方案。 當然,不要忘記先將庫簽入源代碼管理。
這種方法的缺點
系統依賴項永遠不會傳遞。 如果您的模塊以這種方式依賴jOOQ,則模塊的依賴項將看不到jOOQ API。
有關系統依賴性的詳細信息,請參見Maven文檔 。 從文檔中引用:
與作用域系統的依賴關系始終可用,不會在存儲庫中查找。 它們通常用于告知Maven JDK或VM提供的依賴項。 因此,系統依賴關系對于解決對JDK現在提供的工件的依賴關系特別有用,但以前可以單獨下載獲得。 典型示例是JDBC標準擴展或Java身份驗證和授權服務(JAAS)。
更加堅固
一種看起來更健壯的方法是從版本控制系統中檢查依賴性,然后“手動”將其導入本地存儲庫。 這將使它們可用于您自己的本地版本。 以下Shell腳本顯示了如何將jOOQ工件導入本地存儲庫中
Windows批處理
@echo off set VERSION=3.4.4if exist jOOQ-javadoc\jooq-%VERSION%-javadoc.jar (set JAVADOC_JOOQ=-Djavadoc=jOOQ-javadoc\jooq-%VERSION%-javadoc.jarset JAVADOC_JOOQ_META=-Djavadoc=jOOQ-javadoc\jooq-meta-%VERSION%-javadoc.jarset JAVADOC_JOOQ_CODEGEN=-Djavadoc=jOOQ-javadoc\jooq-codegen-%VERSION%-javadoc.jarset JAVADOC_JOOQ_CODEGEN_MAVEN=-Djavadoc=jOOQ-javadoc\jooq-codegen-maven-%VERSION%-javadoc.jarset JAVADOC_JOOQ_SCALA=-Djavadoc=jOOQ-javadoc\jooq-scala-%VERSION%-javadoc.jar )if exist jOOQ-src\jooq-%VERSION%-sources.jar (set SOURCES_JOOQ=-Dsources=jOOQ-src\jooq-%VERSION%-sources.jarset SOURCES_JOOQ_META=-Dsources=jOOQ-src\jooq-meta-%VERSION%-sources.jarset SOURCES_JOOQ_CODEGEN=-Dsources=jOOQ-src\jooq-codegen-%VERSION%-sources.jarset SOURCES_JOOQ_CODEGEN_MAVEN=-Dsources=jOOQ-src\jooq-codegen-maven-%VERSION%-sources.jarset SOURCES_JOOQ_SCALA=-Dsources=jOOQ-src\jooq-scala-%VERSION%-sources.jar )call mvn install:install-file -Dfile=jOOQ-pom\pom.xml -DgroupId=org.jooq -DartifactId=jooq-parent -Dversion=%VERSION% -Dpackaging=pom call mvn install:install-file -Dfile=jOOQ-lib\jooq-%VERSION%.jar -DgroupId=org.jooq -DartifactId=jooq -Dversion=%VERSION% -Dpackaging=jar %JAVADOC_JOOQ% %SOURCES_JOOQ% -DpomFile=jOOQ-pom\jooq\pom.xml call mvn install:install-file -Dfile=jOOQ-lib\jooq-meta-%VERSION%.jar -DgroupId=org.jooq -DartifactId=jooq-meta -Dversion=%VERSION% -Dpackaging=jar %JAVADOC_JOOQ_META% %SOURCES_JOOQ_META% -DpomFile=jOOQ-pom\jooq-meta\pom.xml call mvn install:install-file -Dfile=jOOQ-lib\jooq-codegen-%VERSION%.jar -DgroupId=org.jooq -DartifactId=jooq-codegen -Dversion=%VERSION% -Dpackaging=jar %JAVADOC_JOOQ_CODEGEN% %SOURCES_JOOQ_CODEGEN% -DpomFile=jOOQ-pom\jooq-codegen\pom.xml call mvn install:install-file -Dfile=jOOQ-lib\jooq-codegen-maven-%VERSION%.jar -DgroupId=org.jooq -DartifactId=jooq-codegen-maven -Dversion=%VERSION% -Dpackaging=jar %JAVADOC_JOOQ_CODEGEN_MAVEN% %SOURCES_JOOQ_CODEGEN_META% -DpomFile=jOOQ-pom\jooq-codegen-maven\pom.xml call mvn install:install-file -Dfile=jOOQ-lib\jooq-scala-%VERSION%.jar -DgroupId=org.jooq -DartifactId=jooq-scala -Dversion=%VERSION% -Dpackaging=jar %JAVADOC_JOOQ_SCALA% %SOURCES_JOOQ_SCALA% -DpomFile=jOOQ-pom\jooq-scala\pom.xmlLinux Shell
#!/bin/sh VERSION=3.4.4if [ -f jOOQ-javadoc/jooq-$VERSION-javadoc.jar ]; thenJAVADOC_JOOQ=-Djavadoc=jOOQ-javadoc/jooq-$VERSION-javadoc.jarJAVADOC_JOOQ_META=-Djavadoc=jOOQ-javadoc/jooq-meta-$VERSION-javadoc.jarJAVADOC_JOOQ_CODEGEN=-Djavadoc=jOOQ-javadoc/jooq-codegen-$VERSION-javadoc.jarJAVADOC_JOOQ_CODEGEN_MAVEN=-Djavadoc=jOOQ-javadoc/jooq-codegen-maven-$VERSION-javadoc.jarJAVADOC_JOOQ_SCALA=-Djavadoc=jOOQ-javadoc/jooq-scala-$VERSION-javadoc.jar fiif [ -f jOOQ-src/jooq-$VERSION-sources.jar ]; thenSOURCES_JOOQ=-Dsources=jOOQ-src/jooq-$VERSION-sources.jarSOURCES_JOOQ_META=-Dsources=jOOQ-src/jooq-meta-$VERSION-sources.jarSOURCES_JOOQ_CODEGEN=-Dsources=jOOQ-src/jooq-codegen-$VERSION-sources.jarSOURCES_JOOQ_CODEGEN_MAVEN=-Dsources=jOOQ-src/jooq-codegen-maven-$VERSION-sources.jarSOURCES_JOOQ_SCALA=-Dsources=jOOQ-src/jooq-scala-$VERSION-sources.jar fimvn install:install-file -Dfile=jOOQ-pom/pom.xml -DgroupId=org.jooq -DartifactId=jooq-parent -Dversion=$VERSION -Dpackaging=pom mvn install:install-file -Dfile=jOOQ-lib/jooq-$VERSION.jar -DgroupId=org.jooq -DartifactId=jooq -Dversion=$VERSION -Dpackaging=jar $JAVADOC_JOOQ $SOURCES_JOOQ -DpomFile=jOOQ-pom/jooq/pom.xml mvn install:install-file -Dfile=jOOQ-lib/jooq-meta-$VERSION.jar -DgroupId=org.jooq -DartifactId=jooq-meta -Dversion=$VERSION -Dpackaging=jar $JAVADOC_JOOQ_META $SOURCES_JOOQ_META -DpomFile=jOOQ-pom/jooq-meta/pom.xml mvn install:install-file -Dfile=jOOQ-lib/jooq-codegen-$VERSION.jar -DgroupId=org.jooq -DartifactId=jooq-codegen -Dversion=$VERSION -Dpackaging=jar $JAVADOC_JOOQ_CODEGEN $SOURCES_JOOQ_CODEGEN -DpomFile=jOOQ-pom/jooq-codegen/pom.xml mvn install:install-file -Dfile=jOOQ-lib/jooq-codegen-maven-$VERSION.jar -DgroupId=org.jooq -DartifactId=jooq-codegen-maven -Dversion=$VERSION -Dpackaging=jar $JAVADOC_JOOQ_CODEGEN_MAVEN $SOURCES_JOOQ_CODEGEN_META -DpomFile=jOOQ-pom/jooq-codegen-maven/pom.xml mvn install:install-file -Dfile=jOOQ-lib/jooq-scala-$VERSION.jar -DgroupId=org.jooq -DartifactId=jooq-scala -Dversion=$VERSION -Dpackaging=jar $JAVADOC_JOOQ_SCALA $SOURCES_JOOQ_SCALA -DpomFile=jOOQ-pom/jooq-scala/pom.xml上面的腳本實際上檢查發行版中是否有Javadoc,Sources和/或Binaries,然后安裝:
- 父pom.xml
- 各種工件二進制文件,源文件,javadocs和pom.xml文件
這種方法的優點
現在可以像引用任何其他類型的依賴項一樣引用依賴項,因為人工制品已在本地存儲庫中注冊。 此外,它們還可以傳遞給模塊自己的依賴項,這些依賴關系可以傳遞-這可能是您在使用jOOQ時想要的。 然后,您將指定相關性:
<dependency><groupId>org.jooq</groupId><artifactId>jooq</artifactId><version>${jooq.version}</version> </dependency><dependency><groupId>com.microsoft.sqlserver</groupId><artifactId>sqljdbc4</artifactId><version>3.0</version><scope>provided</scope> </dependency>這種方法的缺點
依賴項的安裝涉及一個手動步驟。 如果您沒有上述可用的腳本,那么弄清楚如何逐步將所有這些依賴項導入到您的存儲庫中可能會很麻煩。 特別是,如果您正在運行演示或原型,則可能在最壞的情況下導致意外的編譯失敗。
要走的路
顯然,在實際的項目設置中,以上兩種方法都不足夠,并且您可能會將庫導入本地Nexus或Bintray或正在使用的任何存儲庫中。 只是要注意商業交付物可能對分銷的潛在限制。
在此處可以找到有關如何將人工制品安裝到Nexus的小教程 。
翻譯自: https://www.javacodegeeks.com/2014/12/how-to-integrate-commercial-third-party-artefacts-into-your-maven-build.html
maven將第三方依賴
總結
以上是生活随笔為你收集整理的maven将第三方依赖_如何将商业第三方文物整合到您的Maven版本中的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 路由查看命令(路由查看 linux)
- 下一篇: 当地农保备案怎么办理(当地农保备案)
