我希望在构建服务器上设置一个公共的本地maven存储库,dev
组中具有该帐户的帐户的所有用户在使用maven运行构建时都能够访问。
只需添加< localRepository>即可轻松完成。标签。但问题是从中央下载到本地存储库的文件的权限是-rw-r-----
,而我想要-rw-rw----
。
是否有maven设置执行此操作或需要系统设置?
更新:请原谅我的生活。 课程我查看了官方的Maven网站。没有与我的用例对话的文档。我看了here和here。有< filePermissions>和< directoryPermissions> < server>的元素element,但它们不包括从服务器下载的文件的权限。
更新2:这不是持续集成意义上的“构建机器”或类似的东西。在这里,开发人员可以进行“本地化”测试构建,从中可以轻松访问开发服务器,这是本地机器无法提供的。这里的目的是节省磁盘空间。这个用例在Maven documentation中有特别提及,其中说:
localRepository:此值是此构建系统的本地路径 库。默认值为$ {user.home} /.m2 / repository。这个 element对于允许所有的主构建服务器特别有用 登录用户从公共本地存储库构建。
但是没有提到下载文件权限的问题。
答案 0 :(得分:2)
cd {MAVEN_HOME}
find repository -type d | xargs chmod g+s
在存储库下创建的每个文件或目录都属于该组。
现在,使用此内容创建文件/ etc / mavenrc,或者如果它不存在则添加到该文件
umask 0007
mvn可执行文件“source”的文件(./etc/mavenrc),以便在maven运行时umask有效但仅在maven进程的持续时间内,之后umask恢复为其默认值。此umask阻止其他用户查看该文件,但允许该组成员具有所有权限(包括写入权限,这是我们所追求的)。
因此,maven写入此存储库的所有文件都是可写组的。
如果您希望非组用户可以读取这些文件,那么
/ etc / mavenrc中的umask 0003
可以解决问题。