我使用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
来实现它?
答案 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>