Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用dropbox为windows和linux设置公共maven存储库?_Linux_Windows_Maven_Ubuntu - Fatal编程技术网

如何使用dropbox为windows和linux设置公共maven存储库?

如何使用dropbox为windows和linux设置公共maven存储库?,linux,windows,maven,ubuntu,Linux,Windows,Maven,Ubuntu,我使用windows和ubuntu进行java开发工作。我使用dropbox为他们管理一个公共工作区。在ubuntu中,我的dropbox文件夹位于主目录中,而在windows中,它位于单独的分区中 我想通过dropbox为windows和linux创建一个通用的.m2文件夹。我明白,通过修改settings.xml中的下一行,我可以实现这一点: <localRepository>${user.home}/dropbox/.m2/repository</localRepos

我使用windows和ubuntu进行java开发工作。我使用dropbox为他们管理一个公共工作区。在ubuntu中,我的dropbox文件夹位于主目录中,而在windows中,它位于单独的分区中

我想通过dropbox为windows和linux创建一个通用的.m2文件夹。我明白,通过修改
settings.xml
中的下一行,我可以实现这一点:

  <localRepository>${user.home}/dropbox/.m2/repository</localRepository>
${user.home}/dropbox/.m2/存储库
虽然在ubuntu和windows的主目录中都设置了dropbox,但这对我来说不起作用,因为我更喜欢在windows的一个完全不同的分区中设置dropbox


我有没有办法在windows和ubuntu中定义一个类似于
user.home
,例如
user.dropbox.home
的新系统变量来实现它?

我最终能够通过如下设置自定义用户变量来实现:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>${user.dropbox.maven}/.m2/repository</localRepository>
</settings>
窗口:

_JAVA_OPTIONS
-Duser.dropbox.maven=E:\Dropbox\maven
_JAVA_OPTIONS
-Duser.dropbox.maven=/home/creationk/Dropbox/maven
Linux:

_JAVA_OPTIONS
-Duser.dropbox.maven=E:\Dropbox\maven
_JAVA_OPTIONS
-Duser.dropbox.maven=/home/creationk/Dropbox/maven
settings.xml
修改如下:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <localRepository>${user.dropbox.maven}/.m2/repository</localRepository>
</settings>

${user.dropbox.maven}/.m2/存储库

我很好奇为什么您想要一个通用的
.m2
文件夹?此文件夹的主要用途是维护本地存储库,以消除不必要的网络流量

我要提醒您不要让您的本地存储库变得如此本地。您很可能会遇到文件损坏和并发问题。詹金斯的用户可以证明这一点,尽管原因不同。Dropbox的更新协议将进一步阻碍这一进程。与其将
.m2
视为存储库,不如将其视为缓存

如果您正在寻找一个公共存储库,我建议您研究:

编辑:

_JAVA_OPTIONS
-Duser.dropbox.maven=E:\Dropbox\maven
_JAVA_OPTIONS
-Duser.dropbox.maven=/home/creationk/Dropbox/maven
鉴于共享
.m2
的目的是创建OP所称的通用存储库,下面演示如何通过Dropbox配置基于文件的存储库。类似的技术可以应用于其他共享文件系统机制(例如CIFS、NFS等),以部署和检索工件

首先,在Dropbox文件夹中创建一个名为
repo
的私人文件夹

接下来,将以下
配置添加到项目的POM中,或者添加到所有项目共享的父POM中,或者添加到概要文件中(但这是另一个问题)

通过在Dropbox的public文件夹中创建存储库文件夹,可以以类似的方式实现基于公共Dropbox的存储库。创建后,登录Dropbox网站并选择存储库文件夹。使用共享按钮检索其公共URL。此URL应用于
配置。比如说,

   <repository>
      <id>db-repo</id>
      <url>https://www.dropbox.com/whatever/dropbox/says/it/should/be</url>
   </repository>

db回购
https://www.dropbox.com/whatever/dropbox/says/it/should/be

只是一个实验。我认为通过我使用的任何设备都可以访问一个通用存储库会很酷你当然可以使用Dropbox作为一个通用存储库;事实上,许多开发人员确实使用它向公众或私人发布他们的工件。请看我的编辑上面的一个例子。谢谢你的建议。你能告诉我以上两种方法哪一种更好吗?以什么方式?简短的回答;虽然存储库管理器(Nexus、Archiva等)具有更陡峭的学习曲线,但它们提供了更多的功能,如缓存外部存储库、组合/分组存储库、用户访问控制、报告、工件管理等。基于文件的repo(如Dropbox示例)很容易手动设置—一次或两次。但是,如果您计划拥有多个存储库、多个用户以及管理所有存储库的其他需要,那么这些手动步骤将变得单调乏味。