Ⅰ dockerdesktop连接自maven工程代码
已经搭建好了kie-server的docker swarm集群. 没有搭建business-central是集群是因为这是个页面的可视化的开发环境 一来面向开发人员,不需要集群部署 二来他的数据是放在本地的git服务器上的. 所以每个node的数据不会统一 三来部署好了之后页面也打不开… 四来business-central是只可以有一个kie-server的远程服务器. 天生就不能集群部署,五来,搭建kie-server的集群是是不能使用 --link参数来指定对应的business-central的, 也就是说搭建的kie-server集群暂时不能指定business-central.
ok结论是 kie-server是三个node的集群, business-central不集群部署,只部署一台服务器. 而且business-central与kie-server不再进行连接. 也就是b 不指定kie-server远程服务器 . 现状暂时如此,以下是讲如此并锋架构下的发布流程.
kie-server对外暴露了一个接口, 用于发布项目.
get请求 http://xxxx.104:8180/kie-server/services/rest//server/containers/testCreate
body:
每个node是有本地maven库的, 会根据请绝激晌求的三个参数从maven本地库找到这个jar 然后部署成一个kie-server里的一个容器. 容器就是kie-server对外提供服务的一个服务器之下的一个最高的组织方式.
ok为了验证可用性 手动把jar分别放进每个node里 并分别执行cp命令将jar从服务器的临时目录到容器里maven本地库下的指定目录里
结果是确实发送了get命令后会部署成功. ok验证通过. 但问题也很明显. 发布过程过于手动化, 对于开发人员来说很容易造成误操作, 比如某个node遗漏了cp命令, 还有一个问题 更严重, 因为已经利用了swarm的特性 已经是负载均衡的了, 所以put请求到了哪个node是不确定的, 需要打开日志发送多次put请求 确保每个node都发布成功了. 这个操作很…很蠢
ok在上一步的基础上更进一步假设如果每个node都连接同一个远程maven库, 那就只需要将代码发布到这个远程库, 即可以达到让每个node都能接受到这个资源从而进行发布, 就不需要人工把jar 到各个node了./opt/jboss/.m2/repository目录会自动建的, 下面有setting.xml配置文件 文件内容很有帮助,
首先setting.xml是maven的配置文件 配置了服务器在哪等等信息. 注释的大致意思是
KIE_MAVEN_REPO - Defaults to http://localhost:8080/drools-wb/maven2
KIE_MAVEN_REPO_USER - Defaults to admin
KIE_MAVEN_REPO_PASSWORD - Defaults to admin
文件使用环境变量来配置, 三个关键的环境变量如上.
也就是说我们创建 kie-server集群的时候如果指定了环境变量 也就可以给每个node指定他的maven服务器地址. 很nice
ok下一步要开一个maven远程服务器 ,并验证可以将本地代码install的jar报 deploy到远程maven服务器.
docker run -d -p 8001:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
第一步利用docker创建一个maven服铅指务器的容器. docker真是越用越好用.
然后http://172.16.250.104:8001 就可以看到maven的管理页面了, 需要密码
进入容器根目录, 下面有nexux-date目录, 里面原来有个admin.password的文件. 打开里面就是admin 的密码 .因为登录后改密码之后这个默认密码的文件消失了, 所以截图里没有
主要是复制下这两个的url
然后本地pc打开 IDEA, 设置 maven /user serttings file override . 然后编辑本地的setttings.xml 全文如下:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>9b1f9129-0b87-460c-9435-37a754198655</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>9b1f9129-0b87-460c-9435-37a754198655</password>
</server>
</servers>
<mirrors>
<mirror>
<id>maven-default-http-blocker</id>
<mirrorOf>external:http:*</mirrorOf>
<name>Pseudo repository to mirror external repositories initially using HTTP.</name>
<url>http://0.0.0.0/</url>
<blocked>true</blocked>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<properties>
<>
nexus-snapshots::default::http://172.16.250.104:8001/repository/maven-snapshots/
</>
<>
nexus-releases::default::http://172.16.250.104:8001/repository/maven-releases/
</>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
关键信息是server和两个url.
maven的配置好了, 然后是项目代码的配置,
对项目来说 ,因为项目用的maven 的配置文件里有了profile nexus, 所以在IDEA里打开项目可以看到profiles nexus是固定选中的
打开项目文件里的 pom.xml 顶级节点下添加如下代码
<distributionManagement>
<!--正式版本-->
<repository>
<!-- 在settings.xml中<server>的id-->
<id>nexus-releases</id>
<url>http://172.16.250.104:8001/repository/maven-releases/</url>
</repository>
<!--快照版本-->
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://172.16.250.104:8001/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ok 这样项目在执行 maven deploy命令的时候就会把install的时候生成的jar发布到远程服务器.根据版本号是否是快照 决定发布到正式还是快照的repostitory, 效果如下
这时候就可以在maven的后台管理页面看到刚deploy的jar
ok至此maven服务器和发布流程已经验证通过, 结束.
下一步是kie-server在部署集群的时候设置环境变量, 让集群中的每个node都连上maven服务器.
还有个问题没有解决, 即put发布命令是被负载均衡了的, 怎么保证每个节点都能确保发布.可能要发布的时候指定一下网络,不用ingress 发布好了之后再改成ingress ? 这要考虑下, 不过还好问题不大
Ⅱ 【最新】主流java框架 springmvc myts websocket 服务器框架哪里有
框架官网 maven仓库 开源社区( sourceforge)
直接到maven仓库去下载,java开源项目比较集中
maven仓库地址:http://repo1.maven.org/maven2/
或者
网上自己去看maven构建项目,maven自己会下载所有依赖包
Ⅲ 怎样更新自己本地maven仓库
首先要指定中央仓库的地址,先到maven中的settery的xml文件,maven默认是阿帕奇的地址,但是服务器在国外,网速会很限制,把地址改成阿里云的地址 第二不,打开这个地址,就能看到阿里云的网站,里面就有jar包的位置信息,
Ⅳ maven repository 私人仓库怎么搭建
方法:
1.基于artifactId准备路径,将artifactId连接到后面:org/testng/testng
2.使用version准备路径,将version连接到后面:org/testng/testng/5.8
3.将artifactId于version以分隔符连字号连接到后面:org/testng/testng/5.8/tesng-5.8
4.判断如果构件有classifier,就要在 第4项 后增加分隔符连字号 再加上 classifier,org/testng/testng/5.8/tesng-5.8-jdk5
5.检查构件的extension,如果extension存在,则加上句点分隔符和extension,而extension是由packing决定的,org/testng/testng/5.8/tesng-5.8-jdk5.jar
Ⅳ maven设置http代理有什么作用
有时候网络不能直接访问外网, 需要设置代理
设置方式如下:
一、检测本地网络是否不能直接访问Maven的远程中央仓库,命令为ping repo1.maven.org
二、要检查代理服务器是否畅通,
比如现在有一个IP地址为192.168.10.117,端口为3267的代理服务,我们需要先运行telnet 192.168.10.117 3267来检查该地址的该端口是否畅通,
如果得道出错信息需要先获取正确的代理服务器信息,
如果telnet连接正确,则输入ctrl+],然后q,回车,退出即可。
三、检查完毕之后,在安装目录中编辑~/.m2/settings.xml文件,代码如下:
添加代理配置如下:
<settings>
...
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>192.168.10.117</host>
<port>3267</port>
<!--
<username>shihuan</username>
<祥斗password>123456</password>
<nonProxyHosts>repository.mycom.com|*.google.com</nonProxyHosts>
-->
判吵</proxy>
谨冲磨</proxies>
...
</settings>
这段配置十分简单,proxies下可以有多个proxy元素,如果你声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。
这里声明了一个id为my-proxy的代理,active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的是指定正确的主机名(host元素)和端口(port元素)。
上述XML配置中我注释掉了username、password、nonProxyHost几个元素,当你的代理服务需要认证时,就需要配置username和password。
nonProxyHost元素用来指定哪些主机名不需要代理,可以使用 | 符号来分隔多个主机名。
此外,该配置也支持通配符,如*.google.com表示所有以google.com结尾的域名访问都不要通过代理。
Ⅵ maven是怎么判断包在本地仓库和远程仓库哪个是新的
maven对构件的更新判断基本上是两种,一种是稳定版本,一种是maven特有的SNAPSHOT版本。
稳定版本很好判断,直接根据maven构件的坐标体系就能够获厅卜得。先从本地仓库中找,如果本地芹派仓库没有,就从pom.xml和setting.xml配置的远程仓库来找。
SNAPSHOT版本的判断比较麻烦,基本步骤如下:
假设我在2014年08月22日09时40分52秒在我自己的电脑上使用 “mvn install” 构建了“com.mycompany.demo:test:1.0-SNAPSHOT”。
那么Maven会在本地仓库目录“~/.m2/com/mycompany/demo/test/1.0-SNAPSHOT/”下生成文件“maven-metadata-local.xml”,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
<groupId>com.mycompany.demo</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
<snapshot>
<localCopy>true</localCopy>
</snapshot>
<lastUpdated>20140822084052</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>1.0-SNAPSHOT</value>
<updated>20140822084052</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>1.0-SNAPSHOT</value>
<updated>20140822084052</updated>
</snapshotVersion>
</snapshotVersions>
</versioning>
</metadata>
十点钟的时候,其他同事更新了com.mycompany.demo:test:1.0-SNAPSHOT的内容,并通过 "mvn deploy" 发布到了公司的Maven服务器上。
公司Maven服务器上产生了文件:
test-1.0-20140822.100021-1.jar
test-1.0-20140822.100021-1.pom
并更新嫌伏贺了maven-metadata.xml,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<metadata modelVersion="1.1.0">
<groupId>com.mycompany.demo</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<versioning>
<snapshot>
<timestamp>20140822.100021</timestamp>
<buildNumber>34</buildNumber>
</snapshot>
<lastUpdated>20140822100021</lastUpdated>
<snapshotVersions>
<snapshotVersion>
<extension>jar</extension>
<value>1.0-20140822.100021-1</value>
<updated>20140822100021</updated>
</snapshotVersion>
<snapshotVersion>
<extension>pom</extension>
<value>1.0-20140822.100021-1</value>
<updated>20130407081828</updated>
</snapshotVersion>
</versioning>
</metadata>
在这期间我的电脑上没有发生过任何关于test的构建。
某一天,我需要构建一个依赖于test的项目,于是我运行了mvn package来打包。
这个时候,maven做了什么呢(背景:我通过配置镜像,使我本地Maven的任何资源都是从公司的Maven服务器下载的)?
Step1:从公司的Maven服务器上下载maven-metadata.xml,重命名为“maven-metadata-<RepositoryID>.xml”,并保存到本地仓库相应目录。
Step2:比较maven-metadata-local.xml与maven-metadata-<RepositoryID>.xml中的lastUpdated时间戳的值。
如果maven-metadata-local.xml中的时间戳比较大,则终止。
如果maven-metadata-<RepositoryID>.xml中的时间戳较大,则从公司Maven服务器上下载最新版本。即:testu-1.0.1-20130407.081828-34.jar。这个过程分两步:(1)下载test-1.0-20140822.100021-1.jar到本地Maven仓库。(2)将test-1.0-20140822.100021-1.jar复制一份,覆盖掉原先的test-1.0-SNAPSHOT.jar。也就是说,如果Maven从远程仓库下载了最新的SNAPSHOT发布包的话,那么最新的待时间戳的包和xxx-SNAPSHOT包是完全一样的。
Ⅶ 是否能够直接访问公共的maven中央仓库
强大的镜像解决java 开发项目的架包问题。
中央仓库地址国外的服务器,访问有点慢,请耐心等待
工具/原料
maven
方法/步骤
一台有网路的电脑,能看到此经验的电脑就可以啦。
复制Maven 中央仓库地址:http://search.maven.org/#browse
或直接点击地址访问。IE11 或谷歌浏览器 打开。
win8 IE11,打开拒绝访问
3
推荐默认浏览器推荐谷歌: