6
回答
Maven内网使用问题
华为云4核8G,高性能云服务器,免费试用   

最近在学习使用Maven,但是因为公司规定导致,只可以在内网环境进行开发。

因为Maven所有的操作都基于插件进行,而官网上是不提供包含了所有插件的Maven下载的,只能下载完成之后,进行mvn 操作再进行插件下载。

因为网络限制,所以我考虑的是,在外网机器上安装Maven,执行了mvn 操作之后,将 repository目录下的插件拷贝到内网使用。

但是蛋疼的问题来了,拷贝完成之后,执行mvn操作还是会提示download,同时操作失败。

想问一下各位在使用maven进行日常开发的时候,是如何规避这样的问题的!

另:因为网络隔绝,所以用代理的方式也是不可行的!!!

举报
leosdaddy
发帖于3年前 6回/2K+阅
共有6个答案 最后回答: 3年前

日常开发的时候,在公司内部搭建一个私服,仅需要私服一台电脑访问外网。

如果你们公司完全限制网络访问,用拷贝的方法应该也是可以的。repository目录下放的一般是dependency的jar包,而插件一般放在用户目录的.m2文件夹下,所以该目录也要拷贝。

引用来自“双_双”的评论

日常开发的时候,在公司内部搭建一个私服,仅需要私服一台电脑访问外网。

如果你们公司完全限制网络访问,用拷贝的方法应该也是可以的。repository目录下放的一般是dependency的jar包,而插件一般放在用户目录的.m2文件夹下,所以该目录也要拷贝。

恩,私服是没办法了,网络是物理隔绝的。

我修改了setting.xml中repository的位置,同时把插件也拷贝至了目标位置,插件也还是不可以使用。

同时我又把插件拷贝至用户目录下的.m2目录,还是无法使用。maven还是提示去下载插件,同时下载失败。

所以想求助看看,不知道maven对于插件是否存在是如何进行判断的。


--- 共有 4 条评论 ---
leosdaddy回复 @Sub : 同为3.3.3版本 3年前 回复
Sub回复 @leosdaddy : 确保你的 maven 的版本一致, 不同的maven 默认使用的插件版本号是不一样的。 3年前 回复
leosdaddy回复 @Sub : 我执行了一次mvn clean之后,clean插件是已经下载的,拷贝插件后,内网执行clean还是提示会下载。 其他的所有插件也都下载完了,拷贝进去之后,还是会提示下载。 3年前 回复
Sub在 copy 之前,需要执行完整的 lifecycle,比如 1. mvn clean 2. mvn deploy 3. mvn site 这样才能保证所有的插件和依赖包全部下载完成,然后在copy .m2 目录 3年前 回复

引用来自“百鬼夜行抄”的评论

很简单啊 ,1)不能上外网的公司都是屎。2)不要在屎一样的公司工作

也不能一棍子打死吧,这个跟公司性质、工作内容都有一定的关系。
我也刚学,回答可能肤浅:在内网搭建一个nexus私服,仅限这台服务器上网,老板应该允许的吧,以后你部门同事都可以去nexus上取jar
--- 共有 1 条评论 ---
leosdaddy算是家大公司吧,公司制度如此,也没法通过谁去通融。 允许我做一个悲伤的表情。 3年前 回复

添加下面的设置到你的/.m2/settings.xml

1. 优先考虑本地

<profile>
    <id>local</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <repositories>
        <repository>
            <id>local</id>
            <name>Local Repository</name>
            <url>https://localhost:8081/nexus/content/groups/public</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>local</id>
            <name>Local Repository</name>
            <url>https://localhost:8081/nexus/content/groups/public</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>interval:30</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</profile>

2.全部通过本地

<mirrors>
    <mirror>
        <id>nexus-local-mirror</id>
        <name>Nexus local mirror</name>
        <url>http://localhost:8081/nexus/content/groups/public</url>
        <mirrorOf>*</mirrorOf>
    </mirror>      
</mirrors>
顶部