如何使用dropbox为Windows和Linux设置常见的maven存储库?

时间:2017-01-15 15:17:05

标签: linux windows maven ubuntu

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

我希望通过dropbox为Windows和Linux提供一个通用的.m2文件夹。我理解通过修改settings.xml中的以下行我可以实现它:

  <localRepository>${user.home}/dropbox/.m2/repository</localRepository>

虽然在ubuntu和windows的主目录中设置了Dropbox时这是有效的,但这对我不起作用,因为我更喜欢将我的Dropbox设置在windows中完全不同的分区中。

有没有什么方法可以定义一个类似于user.home的新系统变量,例如在Windows和ubuntu中都可以实现user.dropbox.home来实现它?

2 个答案:

答案 0 :(得分:0)

我终于可以通过设置自定义用户变量来实现,如下所示:

<强>窗:

_JAVA_OPTIONS
-Duser.dropbox.maven=E:\Dropbox\maven

<强> Linux的:

_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>

答案 1 :(得分:0)

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

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

如果它是您正在寻找的公共存储库,我建议您查看:

修改

鉴于共享.m2的目的是创建,OP调用什么,通用存储库,下面演示了如何通过Dropbox配置基于文件的存储库。类似的技术可以应用于其他共享文件系统机制(例如CIFS,NFS等)来部署和检索工件。

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

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

<distributionManagement>
   <repository>
      <id>db-repo</id>
      <url>file:///C:/Users/user/Dropbox/repo</url>
   </repository>
</distributionManagement>

完成此操作后,无论何时运行mvn deploy,结果工件都将添加到公共存储库中或在公共存储库中更新。存储库的文件路径在不同系统上会有所不同。只要在每个系统中全局设置这些配置,它们只需设置一次。

要使相同项目和其他项目能够使用其下部署的工件,请为公共存储库添加<repository>配置。

...
<repositories>
   ...
   <repository>
      <id>db-repo</id>
      <url>file:///C:/Users/user/Dropbox/repo</url>
   </repository>
</repositories>

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

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