搭建 maven服务器(repository)

用Artifactory管理内部Maven仓库

1. 介绍

  Maven是Java开发者中流行的构建工具,Maven的好处之一是可以帮助减少构建应用程序时所依赖的软件构件的副本,Maven建议的方法是将所有软件构件存储于一个叫做repository的远程仓库中。

  Maven会从ibiblio.org中的公用仓库中同步构件,这个公用仓库下载缓慢、 不稳定,并且不包含一些构件的最新版本,而且不能上传团队私有的构件。通过设置内部Maven仓库,团队可以更有好地利用Maven仓库的优势并且克服使 用ibiblio上的仓库时的缺点。

  本文着眼于Maven仓库工具应提供的一些功能,列出了选择Maven仓库工具的标准, 说明了使用Artifactory设置Maven仓库的相关步骤。在Linux和Windows中设置Maven仓库的过程是相同的,少数不同点在文中已 经用高亮显示,本文列出了与这个Maven仓库的使用有关的POM文件的范例,用截图来向用户阐述如何设置Maven仓库,Maven和 artifactory配置范例也有列出。



1.1 背景知识

  本文假定读者熟悉以下的概念和技术:

   Maven 2

   J2EE web 服务器部署过程(e.g. 在Tomcat中部署Web应用程序)

   XML



1.2 Maven仓库的目的

  Maven仓库的目的是作为团队内所使用的所有软件构件的内部私有构件仓库,将 Maven构件(jar和pom)存储到一个专门的Maven仓库比将它们存储到版本控制系统中更有优势,这是因为:

   构件(jar)是二进制文件,不属于版本控制系统,版本控制系统在处理文本文件方面比较好

   保持较小的版本控制数据库

   Checkout、update和其他版本控制的操作可以更快



1.3 建立内部私有仓库的优势:

   减少可能的版本冲突

   减少首次构建时需要的手动干涉

   中央仓库包含所有依赖的软件构件,引用单一的中央仓库比引用多个独立的本地库要好

   使用内部仓库做clean构建时会快些,因为Maven构件是从内部服务器而不是从因特网上的ibiblio服务器获取。



1.4 Maven构件库的类型

  本地仓库——位于开发者的机器,由开发者维护,它从位于‘~home/.m2’ 目录的‘settings.xml’文件中定义的Maven仓库上同步,如果在pom.xml或setting.xml文件中没有设置内部私有远程仓库, 那么开发者机器上的这个本地仓库就会从ibiblio.org 上的公用Maven仓库上同步。

  内部私有远程仓库——这是我们将要设置的仓库,我们将改变maven 的pom.xml或settings.xml文件来使用这个库。

  外部公用远程仓库——这是在ibiblio.org上的外部公用仓库,默认情况下,Maven从这个仓库上同步。

?

2.Maven仓库概览



2.1 没有Maven仓库下的开发环境





2.2 具有团队内部远程仓库的开发环境









3. 本教程Maven仓库的用例介绍

   在内部仓库中创建2个子库

     Ibiblio 缓存‘Ibiblio-cache’ ——用于存储从ibiblio.org中下载的构件,可以公开访问,它将从外部的ibiblio仓库中同步

     内部仓库internal-maven-repository——用于存储团队内部的构件,它不与任何外部仓库同步,是团队专有的构件库

     可以创建另一个子仓库,这是可选的,用于存储那些公用的但是在ibiblio上暂时没有的构件,例如一些构件的新最版本,这个仓库不与内部仓库同步。我们可以称它为第三方‘3rd-party’

   浏览远程库,最好是通过一个web浏览器

   在仓库中搜索构件

   从版本控制系统中下载代码,修改settings.xml指向内部仓库并且做一次没有任何手工干涉的clean构建

   向仓库中安装一个构件的新版本

   向仓库中大批导入构件

   从仓库中大批导出构件

   手动备份仓库,设置定时自动备份任务



4. Maven仓库工具的选择标准

  理想的Maven仓库工具应该:

?   开放源码并且免费

?   提供管理工具

?   提供仓库浏览器——最好是web浏览器而不是桌面应用程序

?   可以部署到标准web服务器中——例如Apache或Tomcat

?   创建、编辑、删除子库的能力

?   批量导入/导出的工具,用来向构件库或从构件库移动构件

?   访问控制工具和匿名只读访问

?   安装和使用简单

?   备份功能

?   问题追踪,论坛或其他独立的信息来源

?   活跃的社区/开发者,这样产品才能改进,bug才能修正



5. 不同Maven仓库工具的比较

  一些流行且免费的Maven仓库工具有:

    标准Maven代理codehaus—— http://maven-proxy.codehaus.org/

    Dead simple Maven Proxy (DSMP) - http://www.pdark.de/dsmp/

    Proximity - http://proximity.abstracthorizon.org/

    Artifactory - http://www.jfrog.org/sites/artifactory/latest/



  下面列出了一个比较:





codehaus DSMP Proximity Artifactory
管理工具 否 基本 是 是
构件库浏览器 基本 否 是 是
部署到标准Web服务器 是(不可配置) 否 是 是(与Jetty绑定,支持Tomcat)
子库管理 是 是 是 是
批量导入/导出构件 否 否 否 是
安装使用简单 是 是(从代码构建) 是 是(AJAX界面)
备份功能 否 否 否 是(使用quartz和cron表达式)
问题追踪 JIRA,IRC Wiki issues Tracker Jira issues Tracker(良好的在线文档)



  研究过以上所有产品之后得出结论,Artifactory 拥有我们要的所有标准。Proximity看样子也有许多我们要的特性,我们将着眼于Artifactory 的使用。

  关于Artifactory 的其他方面:

     符合我们的需求

     Apache 2.0 许可

     运行于JDK 1.6和Tomcat 6。Artifactory以‘war’文件形式部署到Tomcat

     使用Derby数据库来存储构件,数据以一个已发布的知名的格式存储

     所有构件可以被批量导出到本地库然后导入到其他库,因而易于将构件从一个仓库工具移到另一个,它也使得Maven库的升级非常容易

     兼容Java Content Repository 标准(JSR-170)。

     使用Lucene作为搜索引擎,仓库可以被索引和重新索引

     Ajax界面

     易于定制界面

     使用JIRA作为问题追踪系统



6. 设置Maven仓库



6.1 软件需求

  Artifactory——从http://www.jfrog.org/sites/artifactory/latest/ 下载和安装,当前最新版本是1.2.1-rc1,Artifactory是一个可以被安装到Tomcat中去的Web应用程序

  JDK 1.6 – 更多信息请参阅http://www.jfrog.org/sites/artifactory/latest/install.html

  Tomcat 6



6.2 目录结构

  下载和解压artifactory。目录结构如下:







  这些目录是:

    backup —— 仓库的备份,可以使用cron表达式设置备份策略,quartz定时调度程序在指定的时间里运行备份任务,备份时间间隔在 ‘ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’文件中指定

    bin ——内置jetty 服务器的运行批处理文件

    data —— 包含derby数据库文件,如果你想以一个空的构件库开始,可以删除这个目录中的所有内容,在全新的artifactory 安装中,这个目录是空的。

    etc —— artifactory 的配置文件,有‘artifactory.config.xml’ 、‘jetty.xml ‘和‘log4j.,properties’

    lib —— 包含所有依赖的jar文件

    logs —— 日志文件

    webapps —— 包含war文件,它可以被拷贝到Tomcat中安装。



6.2 在Tomcat 6中部署

  部署 ‘<ARTIFACTORY_INSTALLATION_FOLDER>/webapp’目录中的war文件到 ‘<TOMCAT_INSTALLATION_FOLDER>/webapps’目录中,在jdk1.6和Tomcat 6环境下不需要改变tomcat的配置,Tomcat 6会检测并部署它。

  当这个Web应用程序被部署的时候,需要这些信息:

    保存构件的数据库的位置

    artifactory 的xml配置文件的位置

    备份目录的位置

  可以在一个配置文件中指定所有3个信息,在Tomcat启动期间我们只需要指定 artifactory的安装目录,artifactory会计算出其余的信息。可选的方法是使用jdbc设置好derby数据库的连接并且在Web应用 程序中配置好artifactory (通过在Web应用程序中包含artifactory.config.xml文件)。不管怎样,这个方法是简单的。

  artifactory 安装目录的位置可以被设置为一个环境变量,在Linux中,用‘.bash’来输出artifactory 安装目录的位置的脚本是:



Java代码



1.export JAVA_OPTS = -D<SPAN class=hilite1>artifactory</SPAN>.home=/home/amangat/<SPAN class=hilite1>artifactory</SPAN>-1.2.1-rc1
export JAVA_OPTS = -Dartifactory.home=/home/amangat/artifactory-1.2.1-rc1



  在Windows中,可以添加到Tomcat启动选项中:







6.3 设置Maven仓库

  建议的方法是在我们的Maven仓库中创建3个库(或子库),它们是:

    内部私有仓库private-internal-repository:这个仓库包含仅在团队内使用的构件,它们由开发者手动上传,这个仓库不与ibiblio 中的远程仓库同步,因为这个仓库(或子仓库)中的构件是团队私有的。

    第三方库3rd-party:这个仓库包含公有的但不在ibiblio服务器上的构件,例如,最新版本的尚不在ibiblio的组件或jdbc驱动。这个仓库不与ibiblio 同步,因为ibiblio 没有这些jar。

    Ibiblio 缓存Ibiblio-cache:这个仓库与ibiblio 仓库同步,它是ibiblio 上的构件的缓存。



  设置这三个仓库,需要修改<ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’中的配置:



Xml代码



1.<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2. xmlns="http://<SPAN class=hilite1>artifactory</SPAN>.jfrog.org/xsd/1.0.0"
3. xsi:schemaLocation="http://<SPAN class=hilite1>artifactory</SPAN>.jfrog.org/xsd/1.0.0
4. http://www.jfrog.org/xsd/<SPAN class=hilite1>artifactory</SPAN>-v1_0_0.xsd">
5. <!-- Backup every 12 hours -->
6. <!--<backupCronExp>0 0 /12 * * ?</backupCronExp>-->
7. <localRepositories>
8. <localRepository>
9. <key>private-internal-repository</key>
10. <description>Private internal repository</description>
11. <handleReleases>true</handleReleases>
12. <handleSnapshots>true</handleSnapshots>
13. </localRepository>
14. <localRepository>
15. <key>3rd-party</key>
16. <description>3rd party jars added manually</description>
17. <handleReleases>true</handleReleases>
18. <handleSnapshots>false</handleSnapshots>
19. </localRepository>
20. </localRepositories>
21. <remoteRepositories>
22. <remoteRepository>
23. <key>ibiblio</key>
24. <handleReleases>true</handleReleases>
25. <handleSnapshots>false</handleSnapshots>
26. <excludesPattern>org/<SPAN class=hilite1>artifactory</SPAN>/**,org/jfrog/**</excludesPattern>
27. <url>http://repo1.maven.org/maven2</url>
28. </remoteRepository>
29. </remoteRepositories>
30.</config>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://artifactory.jfrog.org/xsd/1.0.0" xsi:schemaLocation="http://artifactory.jfrog.org/xsd/1.0.0 http://www.jfrog.org/xsd/artifactory-v1_0_0.xsd"> <!-- Backup every 12 hours --> <!--<backupCronExp>0 0 /12 * * ?</backupCronExp>--> <localRepositories> <localRepository> <key>private-internal-repository</key> <description>Private internal repository</description> <handleReleases>true</handleReleases> <handleSnapshots>true</handleSnapshots> </localRepository> <localRepository> <key>3rd-party</key> <description>3rd party jars added manually</description> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> </localRepository> </localRepositories> <remoteRepositories> <remoteRepository> <key>ibiblio</key> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> <excludesPattern>org/artifactory/**,org/jfrog/**</excludesPattern> <url>http://repo1.maven.org/maven2</url> </remoteRepository> </remoteRepositories></config>





  启动Tomcat并且输入 http://localhost:8080/artifactor

  下面是artifactory的首页面:







  以用户名admin和密码password登录,点击浏览仓库的链接,你可以查看仓库的内容。







7.配置Maven以使用新的仓库



7.1 配置Maven的settings.xml 文件

  Maven使用位于‘~/.m2/settings.xml’目录的 settings.xml文件来获取Maven仓库 ,如果没有在该文件中指定仓库,Maven默认使用ibiblio.org上的仓库, settings.xml文件必须被修改以使用新的仓库:



Xml代码



1.<profiles>
2. <profile>
3. <id>dev</id>
4. <properties>
5. <tomcat5x.home>C:/InstalledPrograms/apache-tomcat-5.5.20</tomcat5x.home>
6. </properties>
7. <repositories>
8. <repository>
9. <id>central</id>
10. <url>http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/repo</url>
11. <snapshots>
12. <enabled>false</enabled>
13. </snapshots>
14. </repository>
15. <repository>
16. <id>snapshots</id>
17. <url>http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/repo</url>
18. <releases>
19. <enabled>false</enabled>
20. </releases>
21. </repository>
22. </repositories>
23. <pluginRepositories>
24. <pluginRepository>
25. <id>central</id>
26. <url>http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/repo</url>
27. <snapshots>
28. <enabled>false</enabled>
29. </snapshots>
30. </pluginRepository>
31. <pluginRepository>
32. <id>snapshots</id>
33. <url>http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/repo</url>
34. <releases>
35. <enabled>false</enabled>
36. </releases>
37. </pluginRepository>
38. </pluginRepositories>
39. </profile>
40.</profiles>
<profiles> <profile> <id>dev</id> <properties> <tomcat5x.home>C:/InstalledPrograms/apache-tomcat-5.5.20</tomcat5x.home> </properties> <repositories> <repository> <id>central</id> <url>http://localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <url>http://localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>snapshots</id> <url>http://localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </pluginRepository> </pluginRepositories> </profile></profiles>





7.2 使用pom.xml配置Maven

  也可以在项目的pom.xml文件中设置仓库,下面是pom.xml范例文件:



Xml代码



1.<project xmlns="http://maven.apache.org/POM/4.0.0"
2.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
4.<A href="http://maven.apache.org/maven-v4_0_0.xsd" target=_blank>http://maven.apache.org/maven-v4_0_0.xsd</A>">
5.<modelVersion>4.0.0</modelVersion>
6.<groupId>test</groupId>
7.<artifactId>test</artifactId>
8.<packaging>jar</packaging>
9.<version>1.0-SNAPSHOT</version>
10.<name>test</name>
11.<url>http://maven.apache.org</url>
12. <repositories>
13. <repository>
14. <id>central</id>
15. <url>http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/repo</url>
16. <snapshots>
17. <enabled>false</enabled>
18. </snapshots>
19. </repository>
20. <repository>
21. <id>snapshots</id>
22. <url>http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/repo</url>
23. <releases>
24. <enabled>false</enabled>
25. </releases>
26. </repository>
27. </repositories>
28. <pluginRepositories>
29. <pluginRepository>
30. <id>central</id>
31. <url>http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/repo</url>
32. <snapshots>
33. <enabled>false</enabled>
34. </snapshots>
35. </pluginRepository>
36. <pluginRepository>
37. <id>snapshots</id>
38. <url>http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/repo</url>
39. <releases>
40. <enabled>false</enabled>
41. </releases>
42. </pluginRepository>
43. </pluginRepositories>
44.<dependencies>
45. <dependency>
46. <groupId>junit</groupId>
47. <artifactId>junit</artifactId>
48. <version>3.8.1</version>
49. <scope>test</scope>
50. </dependency>
51.</dependencies>
52.</project>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/maven-v4_0_0.xsd "><modelVersion>4.0.0</modelVersion><groupId>test</groupId><artifactId>test</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><name>test</name><url>http://maven.apache.org</url> <repositories> <repository> <id>central</id> <url>http://localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <url>http://localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>snapshots</id> <url>http://localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </pluginRepository> </pluginRepositories><dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency></dependencies></project>





7.3 使用Maven构件仓库构建项目

  在构建Maven项目的时候,所有的构件库都会从新的仓库下载,控件台会显示下载的过程:





  用浏览器登录到新的构件仓库,你会发现artifactory 已经下载并缓存了ibiblio上的构件。







7.4 安装构件到构件仓库

  可以通过Web界面或Maven命令行安装构件,通过Web界面来安装更简单更快,并且不需要修改任何配置。通过命令行安装需要修改settings.xml配置文件,可以在其他脚本中使用。



7.4.1 通过Web界面安装构件



  安装步骤如下:

  1. 上传要部署的构件(‘jar’ 文件 或 ‘pom’ 文件)





  2. 如果你上传的是jar文件,Artifactory会为它创建pom文件 。上传的时候你可以指定上传到哪个仓库。







  3. 上传完后,上传的构件与artifactory 自动创建的pom文件一起在仓库中出现。







7.4.1 能过Maven命令行安装构件

  当用‘mvn clean install’ 命令的时候,Maven仅仅打包和安装构件到本地仓库,要把它安装到APH内部仓库中,我们必须在settings.xml中添加一条额外的配置:



Java代码



1.<settings>
2. <servers>
3. <server>
4. <id>organisation-internal</id>
5. <username>admin</username>
6. <password>password</password>
7. </server>
8. </servers>
9.</settings>
<settings> <servers> <server> <id>organisation-internal</id> <username>admin</username> <password>password</password> </server> </servers></settings>





  安装构件到内部Maven仓库的命令是:



Java代码



1.mvn deploy:deploy-file -DrepositoryId=organisation-internal -Durl=http://localhost:8080/<SPAN class=hilite1>artifactory</SPAN>/private-internal-repository
2.-DgroupId=test -DartifactId=test -Dversion=1.1 -Dpackaging=jar -Dfile=target/test-1.1.jar
mvn deploy:deploy-file -DrepositoryId=organisation-internal -Durl=http://localhost:8080/artifactory/private-internal-repository-DgroupId=test -DartifactId=test -Dversion=1.1 -Dpackaging=jar -Dfile=target/test-1.1.jar





  repositoryId必须与settings.xml中定义的服务器ID相匹配,url必须包含构件将要被安装到的仓库的名称。



  新的构件会在仓库中出现,并且artifactory 会自动为我们创建pom文件。





8. Artifactory 的其他特性



8.1 备份构件仓库

  备份策略在 <ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml中指定,使用 cron表达式来指定定时备份任务,配置备份任务的元素在下面的代码清单中用高亮显示出来了



Xml代码



1.<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2. xmlns="http://<SPAN class=hilite1>artifactory</SPAN>.jfrog.org/xsd/1.0.0"
3. xsi:schemaLocation="http://<SPAN class=hilite1>artifactory</SPAN>.jfrog.org/xsd/1.0.0
4. http://www.jfrog.org/xsd/<SPAN class=hilite1>artifactory</SPAN>-v1_0_0.xsd">
5. <!-- Backup every 12 hours -->
6. <backupCronExp>0 0 /12 * * ?</backupCronExp>
7. <localRepositories>
8. <localRepository>
9. <key>private-internal-repository</key>
10. <description>Private internal repository</description>
11. <handleReleases>true</handleReleases>
12. <handleSnapshots>true</handleSnapshots>
13. </localRepository>
14. <localRepository>
15. <key>3rd-party</key>
16. <description>3rd party jars added manually</description>
17. <handleReleases>true</handleReleases>
18. <handleSnapshots>false</handleSnapshots>
19. </localRepository>
20. </localRepositories>
21. <remoteRepositories>
22. <remoteRepository>
23. <key>ibiblio</key>
24. <handleReleases>true</handleReleases>
25. <handleSnapshots>false</handleSnapshots>
26. <excludesPattern>org/<SPAN class=hilite1>artifactory</SPAN>/**,org/jfrog/**</excludesPattern>
27. <url>http://repo1.maven.org/maven2</url>
28. </remoteRepository>
29. </remoteRepositories>
30.</config>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://artifactory.jfrog.org/xsd/1.0.0" xsi:schemaLocation="http://artifactory.jfrog.org/xsd/1.0.0 http://www.jfrog.org/xsd/artifactory-v1_0_0.xsd"> <!-- Backup every 12 hours --> <backupCronExp>0 0 /12 * * ?</backupCronExp> <localRepositories> <localRepository> <key>private-internal-repository</key> <description>Private internal repository</description> <handleReleases>true</handleReleases> <handleSnapshots>true</handleSnapshots> </localRepository> <localRepository> <key>3rd-party</key> <description>3rd party jars added manually</description> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> </localRepository> </localRepositories> <remoteRepositories> <remoteRepository> <key>ibiblio</key> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> <excludesPattern>org/artifactory/**,org/jfrog/**</excludesPattern> <url>http://repo1.maven.org/maven2</url> </remoteRepository> </remoteRepositories></config>





  备份文件存储在 ‘<ARTIFACTORY_INSTALLATION_FOLDER>/backups’目录,备份文件的格式与开发者机器上的本地仓库一致,这使得要移植仓库内容到其他Maven仓库工具中时非常容易。



8.2 其他特性

  通过Web界面删除构件

  通过Web界面搜索构件

  批量导入/导出仓库中的所有构件

  如果不要求使用Tomcat,可以使用内置的jetty服务器



9. 结论

  内部私有Maven仓库加快构建的过程并且使clean构建更简单,它还帮助避免不同构件版本的冲突。

  在这4款通用的Maven构件仓库工具中,看样子Artifactory 是比较好的产品。

  Artifactory使得设置Maven仓库变得简单;它提供了一个好的Maven仓 库工具应该实现的所有功能;团队不会被锁定在这个工具上,因为可以容易地移植仓库内容到其他仓库工具上;对于不知道Maven仓库如何工作的人来 说,Web界面使得他们能很容易地使用仓库。
搭建私有 Maven 仓库 搭建 Maven 仓库主要涉及到两种类型:本地仓库和远程仓库。本地仓库是 Maven 在你的计算机上存储所有项目依赖的本地副本的地方。远程仓库可以是任何可以从互联网上访问的 Maven 仓库,比如 Maven 中央仓库、公司内部的私有仓库等。下面,我将主要介绍如何搭建一个私有 Maven 仓库。 阅读详情

相关推荐

OpenCV安装配置教程VS2022(超级顺利)

博主最开始没打算写这篇博客,只是想简单的在网上找一下最新版的OpenCV的安装配置教程,适用于VS2022的,但是我搜了一早上,也没搜到一个能让我成功安装配置的,看了很多很多文章,根本就没有几篇有用的。所以没办法了,只能自己研究了,于是就整理了这篇博客,希望能帮到和我一样的人,这就是博主一直信奉的利他精神!

weixin_47367099的博客 5万+

Maven学习四:使用mvn install创建自己的repository

mvn install 这个命令会把当前项目或模块打包之后注入到本地Repository中,以供引用。我们平时做项目的时候,也常把项目编译后打成jar包,让其他项目引用。maven提供的install命令更方便快捷的实现了这个操作,并且可供maven模块化管理,mvn package 可以生成相应的jar包。

纪争光 2万+

Ansys Lumerical 启动时出现 Error: Could not connect to Ansys license server specified at 1055@ 的另一种解决办法

昨天在关闭了中之后 就能正常打开 FDTD 了,结果今天想开启出现了同样的报错:我猜测昨天能启动的原因在于关闭之后要重启电脑,并且在重启之后我第一时间打开 lumerical 测试因此端口没有被占用,今天是在电脑启动之后一段时间才打开所以又遇到了端口占用的问题。

qq_51404184的博客 9540

搭建maven服务器(repository)方法中文翻译

2008-03-14 用Artifactory管理内部Maven仓库 1. 介绍   Maven是Java开发者中流行的构建工具,Maven的好处之一是可以帮助减少构建应用程序时所依赖的软件构件的副本,Maven建议的方法是将所有软件构件存储于一个叫做repository的远程仓库中。   Maven会从ibiblio.org中的公用仓库中同步构件,这个公用仓库下载缓慢、 不稳定,并且不包...

weixin_30835933的博客 220

SAP CEWB 高效批量调整工艺路线与BOM的实战指南

本文详细介绍了SAP CEWB工具在批量调整工艺路线与BOM中的高效应用。通过实战案例和操作指南,帮助制造业企业快速掌握批量修改技巧,显著提升工作效率,避免手工操作带来的错误和耗时。特别适合需要频繁更新工艺路线和BOM的企业用户。

weixin_42524708的博客 397

深入探讨 VQ-VAE:理解变分量化自动编码器

VQ-VAE代表"Variational Quantized Variational Autoencoder",是一种生成模型,通常用于处理高维数据,如图像和音频。它的设计灵感来自于变分自动编码器(VAE)和量化方法,结合了它们的优点,使得 VQ-VAE 能够生成高质量的数据,并在数据表示上引入离散性。VQ-VAE 是一种强大的生成模型,结合了变分自动编码器和量化方法的优点。它在图像和音频生成、数据压缩和生成性对抗网络等领域具有广泛的应用。

DeepViewInsight的博客 7013

教你两步生成Maven包

随着公司业务渠道的增多,迭代过程中出现的问题也越来越多:     1.项目变多后第三方库的版本很难保持统一     2.修改一次公司的sdk并同步到各项目中的成本越来越大 解决上面的问题,最好的办法就是将公用的模块打成maven包,只需要专人来维护就可以。  其实打出Maven包非常简单,我们只需要两步即可,什么你不信? Maven包生成 第一步:找到Project下的build.gr...

冰冰有礼的博客 683

Grey Hack v0.7.3618 保姆级教程:手把手教你用metaxploit.so写一个自动提权脚本

本文详细介绍了如何在Grey Hack v0.7.3618中使用metaxploit.so库编写自动化提权脚本。从环境准备到核心功能解析,再到漏洞利用链构建和权限提升的智能处理,手把手教你掌握游戏中的高级黑客技巧。通过多库联合利用和错误处理优化,提升脚本的效率和成功率。

weixin_42537919的博客 394

搭建maven本地仓库

最近学习springboot的一些东西,需要eclipse环境和maven。以前的项目都是直接pom.xml引入,没有搭建过本地的maven仓库,正好趁着这次机会试着搭建一下。 安装maven之前,首先应该确保装好了jdk。maven3对应jdk1.7以上的版本。我自己的jdk是1.8的,登陆maven的官网,选择版本下载,我这里下载的是最新的3.5.3。 下载之后解压到目录,然后同级目录...

为你封疆的博客 4万+

六自由度机器人(机械臂)运动学建模及运动规划系列(一)——简介

毕业设计做了六轴机器人相关的课题,做完之后学到很多,在这里分享一下。

weixin_47849087的博客 2万+

# YOLOv11-seg改进系列 | 引入CVPR MetaFormer的C3k2_PoolingFormerCGLU模块,池化Token混合+CGLU门控MLP

本文引入 CVPR 2022 论文(MetaFormer/PoolFormer)提出的 MetaFormer 元架构设计,以Pooling Token 混合器 + ConvolutionalGLU(CGLU)MLP构成,将其封装为,用于替换 YOLOv11-seg 的 C3k2 块。对比维度C3k2(基线)C3k2_PoolingFormerCGLU(本文)参数量(n scale)2.46M≈2.49M9.6≈9.69.7(+1.0%)架构范式单阶段卷积MetaFormer 双阶段。

qq_44224801的博客 843

Maven(三) 仓库 repository

本地仓库(.m2) vs. 远程仓库(联网) 运行Maven的时候,Maven所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。 比如说,你的项目配置了junit-3.8的依赖,在你运行mvn test 的时候,Maven需要使用junit-3.8的jar文件,它首先根据坐标查找本地仓库,如果找到,就直接使用。如果没...

RainSun 3万+

微信小程序 - 真机调试调用接口报错{errno: 600001, errMsg: “request:fail -102:net::ERR_CONNECTION_REFUSED},真机运行测试请求异常

微信小程序,真机,调试测试,运行报错,API接口,服务器接口都报错了,小程序报错errno: 600001,小程序报错request:fail -102:net::ERR_CONNECTION_REFUSED,真实手机打开接口全都失效了,微信小程序真机测试失败,微信小程序{errno: 600001, errMsg: "request:fail -102:net::ERR_CONNECTION_REFUSED"},详细解决方法,https,服务器SSL证书,无法解决,服务器更换SSL证书,接口地址改了也不行

🏆 前端领域优质创作者 1万+

搭建maven服务器(repository)

原题:搭建Maven2私服 摘自:http://www.javaeye.com/topic/143426 周末尝试使用Artifactory搭建了个Maven2的私服,供开发团队使用。于是来到了Artifactory的Jfrog主站,绿色的卡通形象怎么看都不是只青蛙王子,明明是野兽派的忍者神龟嘛。 安装 (Installation) - Actifactory的系统...

weixin_30379973的博客 144

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

搭建 maven服务器(repository)方法中文翻译

用Artifactory管理内部Maven仓库1. 介绍  Maven是Java开发者中流行的构建工具,Maven的好处之一是可以帮助减少构建应用程序时所依赖的软件构件的副本,Maven建议的方法是将所有软件构件存储于一个叫做repository的远程仓库中。  Maven会从ibiblio.org中的公用仓库中同步构件,这个公用仓库下载缓慢、 不稳定,并且不包含一些构

走向资深架构师的旅程 5662

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

使用Nexus搭建maven服务器 (openSUSE 13.1)Nexus Repository Manager OSS 2.14.1-01

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33726318的博客 831

Maven私服(Repository Manager) - Nexus安装和使用(详细过程)

Maven私服的安装和使用。 (注:原创文章,引用请注明来自Clement-Xu的博客!) Maven私服(即Repository Manager)的主要作用: 减少从远方仓库下载的次数,节省带宽、提高maven build的效率 减少对远方仓库的依赖,确保maven build的稳定性 方便内部人员发布artifact 方便存放官方仓库中没有的第三方依赖包 官网:https...

weixin_33928137的博客 1614

Mac搭建本地Maven仓库For Android Studio

本地搭建Maven仓库并且完成本地依赖

梁超杰 1428

sonatype nexus 搭建maven服务器

1.下载nexus,下载oss版本 2.更改下载的nexus-xxx.war为nexus.war 3.拷贝到tomcat的webapp目录下 4.运行tomcat,进入nexus起始页 5.用admin/admin123登录 6. 点击Administration菜单下面的Repositories,将这三个仓库Apache Snapshots,Codehaus  Snapshots,Ma

132

用nexus搭建maven私服 配置

背景:最近项目准备使用maven+nexus来管理构件,也方便项目的构建,所以老大就让俺研究研究怎么用nexus搭建maven私服 环境:win7-64、nexus-2.2、maven-3.0.4、jdk1.6.0_10 一、用admin用户登陆nexus nexus的下载和安装都很简单,网上也有很多介绍,本文就不重复了。主要介绍一下安装之后的配置 nexus的配置需要用a

人参米 901

IDEA搭建Spring项目

IDEA 搭建spring 开发环境

weixin_43127437的博客 3142

用nexus搭建自己的maven私有仓库

用nexus搭建自己的maven私有仓库 刚安装nexus时,nexus启动失败,启动不到1分钟,自动停止。后来查找到了原因: Java 6 Support EOLOracle's support for Java 6 ended in February 2013. Consequentially as of version 2.6 Nexus now requires a Java ...

weixin_34051201的博客 98

用nexus搭建maven私服

首先介绍一下背景,公司访问外网有限制,项目组大部分人员不能访问maven的central repository,因此在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上环境是:nexus-2.1.1、maven-3.0.4、jdk-1.6.0_32一、用admin用户登陆nexusnexus的下载和安装都很简单,网上也有很多介绍,本文就不重复了。主要介绍一下安装之...

weixin_30758821的博客 73

用nexus搭建maven私服(整合网上文章而成的)

maven与nexus的私服架设,高级程序员必知必会

滴水穿石,点石成金 501
上一篇: El表达式
下一篇: Quartz任务调度快速入门
nddjava
博客等级 码龄16年 15粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值