-
#化鲲为鹏,我有话说#检查JDK环境java -version###java version "1.7.0_45"OpenJDK Runtime Environment (rhel-2.4.3.3.el6-x86_64 u45-b15)OpenJDK 64-Bit Server VM (build 24.45-b08, mixed mode)###说明JDK安装成功下载Mavenwget http://mirror.bit.edu.cn/apache/maven/maven-3/3.2.3/binaries/apache-maven-3.2.3-bin.tar.gztar vxf apache-maven-3.2.3-bin.tar.gzmv apache-maven-3.2.3 /usr/local/maven3设置环境变量 :vim /etc/profile###MAVEN_HOME=/usr/local/maven3export MAVEN_HOMEexport PATH=${PATH}:${MAVEN_HOME}/bin###source /etc/profile验证maven是否安装成功mvn -v
-
在使用maven/ant编译时,经常会遇到找不到jar导致编译报错的问题:类似出现“Could not transfer artifact”“Failed to collect dependencies”“Could not resolve dependencies”等关键字的报错:像这种问题,一般出现的原因有以下几点:1、maven远程仓链接不上;2、maven远程仓没有对应的jar或者pom出现这种问题的解决办法一般是更换maven远程仓或者去其他maven仓找对应的jar或者pom,下载下来,替换到本地maven仓库。例如:解决方法:这个问题是由于从远端仓库下载jetty-util-6.1.26.hwx.jar失败,应该是从https://repository.apache.org/content/repositories/snapshorts下载不到对应的jar包。可以去https://repo.huaweicloud.com/repository/maven找对应的jar包和pom文件,并放到本地仓库对应的路径下。从报错信息可以看出,jar包的本地路径是~/.m2/repository/org/mortbay/jetty/jetty-util/6.1.26.hwx,对应的远端仓库路径则是:https://repo.huaweicloud.com/repository/maven/org/mortbay/jetty/jetty-util/6.1.26.hwx/jetty-util-6.1.26.hwx.jar 。可以看出来,远端仓库的路径和本地仓库路径是一一对应的。后续如果再出现这样的问题,也可以参考这样修改。不过记得要将jar包对应的pom文件也下载下来放到本地仓库。
-
大部分大数据的开源软件使用的是maven编译,而且大多使用国外的maven源,所以在编译时,大家会经常遇到编译慢的问题,有两个小技巧可以提升编译速度:1、修改maven中的conf/settings.xml的远程仓库为国内的maven仓,如华为云:<mirror> <id>mirror</id> <mirrorOf>*</mirrorOf> <name>huaweicloud</name> <url>https://repo.huaweicloud.com/repository/maven/</url></mirror>2、有些开源软件在代码中指定maven仓库的地址,在编译时,优先去代码中指定的maven仓下载,可以将这些maven仓地址换成国内的再编译。一般这些仓库的地址是在pom.xml中指定的。
-
使用maven工程构建java 的hadoop客户端项目说明通过java操作hadoop中的hdfs分布式文件系统,首先我们要建新一个maven的java工程,然后在pom.xml导入hadoop的如果的依赖java包。再编写一个java的测试类去连接hadoop的集群环境。注意hadoop集群版本与导入hadoop-client的版本要一致,避免产生其它的问题。工程目录导入Maven的依赖包 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>3.0.0</version> </dependency> </dependencies>编写Java处理hadoop集群的测试类package net.togogo.hdfs; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.LocatedFileStatus; import org.apache.hadoop.fs.Path; import org.apache.hadoop.fs.RemoteIterator; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.net.URI; /** * 构建HdfsClient来操作hadoop集群 */ public class HdfsClient { private FileSystem fs = null; /** * 构建分布式文件系统的操作对象FileSystem */ @Before public void init() { System.out.println(" init methon start ...."); try { Configuration conf = new Configuration(); //连接集群的地址 URI uri = new URI("hdfs://192.168.20.32:9000"); fs = FileSystem.get(uri, conf, "hd"); System.out.println("FileSystem---->" + fs); } catch (Exception e) { e.printStackTrace(); } System.out.println(" init methon end ...."); } /** * 命令 hadoop fs -ls / */ @Test public void listRoot() { try { System.out.println("listRoot method ...."); //访问 hadoop fs -ls / RemoteIterator it = fs.listFiles(new Path("/"), true); //循环 while (it.hasNext()) { LocatedFileStatus lf = it.next(); System.out.println(lf.getPath().getName()); } fs.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 命令 hadoop fs -mkdir /test0831 */ @Test public void mkdir() { try { Path path = new Path("/test0831"); fs.mkdirs(path); fs.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 命令 hadoop fs -put F:/hello.log / */ @Test public void upload() { try { Path src = new Path("F:/hello.log"); Path dst = new Path("/"); fs.copyFromLocalFile(src, dst); } catch (IOException e) { e.printStackTrace(); } } /** * 命令 hadoop fs -get /hello.log F:/dsthello.log */ @Test public void download() { try { Path src = new Path("/hello.log"); Path dst = new Path("F:/dsthello.log"); fs.copyToLocalFile(src, dst); } catch (IOException e) { e.printStackTrace(); } } }腾科IT教育
-
背景:在做软件移植时,第一步一般是扫描依赖,看是否包含X86的动态库,接着确定使用该库存的JAR包。有些场景中,这个jar包并不是布署在mvn库的,而是通过编译生成的,即:我们看到的动态库与这个JAR的关系并不是直接包含关系,这个JAR是使用了仓中的某个JAR包,而因有这个动态库。这种情况一下,我们就不知道这个中间JAR的版本。怎么办呢?方法一:1、先问,google等手段,确定出使用你这个动态库存的jar包名称;2、在源码目录中,使用grep -rn "jar包名称" , 看一下有没有文件在描述它。幸运的话,你会发些一些文件在描述依赖,你就可以找到版本,然后下载对应源码后在本地部署。然后重新编译你的大数据组件,动态库就可以被替换方法二:1、找到这个中间jar包的mvn目录,然后移值(重命名)2、重新启动编译,之后到相同目录中,可以看到新生成的版本目录3、记下来,尝试手工编译,然后覆盖还有没有其它方法,也请分享。
-
首先让我们来建立一个Hello ActFramework项目。 ActFramework 提供了完整的 Maven 生态,我们可以借由 Maven 很快的展开一个 ActFramework 的基础项目。让我们给还没用熟IDEA的小伙伴一点提示。新增一个 Maven 的展开项org.actframeworkarchetype-quickstart1.8.23.0然后填写上你项目的基本信息然后根据你的需要配置一下你的项目信息。 基本上除了路径也不需要额外配置。 最后创建项目,等着 Maven 自动展开就好啦。 PS:建议同学们按照Java 比较通用的命名规则来对项目进行命名,请不要学习我瞎命名。
-
问题: 在使用CloudIDE 过程中遇到一个问题,代码在编译构建服务中构建成功,但是在CloudIDE中却因为下载不了依赖包而构建失败,这是应为两者的maven 依赖仓的配置不一样,下面分享下如何在CloudIDE中配置和编译构建服务一样的maven 依赖仓。使用的CloudIDE 服务的链接: https://devcloud.cn-north-4.huaweicloud.com/cloudide/home1,首先去编译构建服务 新建一个构建任务,输入“cat ~/.m2/settings.xml”,:2, 运行构建任务,并从日志中复制出settings.xml:3, 复制后去掉前面的时间戳,并删除 <localRepository> 标签:4,打开要配置的cloudide实例,在工程下新建文件settings.xml, 经获取的settings.xml 内容复制到新建的文件中保存:5, 打开teminal 执行“cp settings.xml ~/.m2/settings.xml”6, 完成maven 的配置, 在命令行执行mvn package, 依赖包不能下载的问题就解决了
-
Maven构建java工程操作hdfs实例腾科教育以为理论+实操为主的教学,带你进入大数据开发基础。每一步都带着你,让你一步一步实现自已的大数据开发梦想。构建maven工程 导入maven类包 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.8.1</version> </dependency> </dependencies>编写Junit单元测试类package net.togogo.hdfsproject; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.*; import org.junit.Before; import org.junit.Test; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; public class HdfsClientTest { FileSystem fs = null; @Before public void init() throws Exception { // 构造一个配置参数对象,设置一个参数:我们要访问的hdfs的URI // 从而FileSystem.get()方法就知道应该是去构造一个访问hdfs文件系统的客户端,以及hdfs的访问地址 // new Configuration();的时候,它就会去加载jar包中的hdfs-default.xml // 然后再加载classpath下的hdfs-site.xml Configuration conf = new Configuration(); conf.set("fs.defaultFS", "hdfs://192.168.75.129:9000"); /** * 参数优先级: 1、客户端代码中设置的值 2、classpath下的用户自定义配置文件 3、然后是服务器的默认配置 */ conf.set("dfs.replication", "3"); // 获取一个hdfs的访问客户端,根据参数,这个实例应该是DistributedFileSystem的实例 // fs = FileSystem.get(conf); // 如果这样去获取,那conf里面就可以不要配"fs.defaultFS"参数,而且,这个客户端的身份标识已经是hadoop用户 fs = FileSystem.get(new URI("hdfs://192.168.75.129:9000"), conf, "hadoop"); } @Test public void testAddFileToHdfs(){ // 要上传的文件所在的本地路径 Path src = new Path("D:\\stone\\HCNA-AI\\images\\idcard.jpg"); // 要上传到hdfs的目标路径 Path dst = new Path("/togogo/idcard.jpg"); try { fs.copyFromLocalFile(src,dst); System.out.println("文件上传成功..."); } catch (IOException e) { e.printStackTrace(); } } @Test public void testDelFileFromHdfs(){ // 要上传到hdfs的目标路径 Path dst = new Path("/togogo/work"); try { fs.delete(dst,true); System.out.println("文件删除成功..."); } catch (IOException e) { e.printStackTrace(); } } /** * 查看目录信息,只显示文件 * * @throws IOException * @throws IllegalArgumentException * @throws FileNotFoundException */ @Test public void testListFiles() throws FileNotFoundException, IllegalArgumentException, IOException { // 思考:为什么返回迭代器,而不是List之类的容器 RemoteIterator while (listFiles.hasNext()) { LocatedFileStatus fileStatus = listFiles.next(); System.out.println(fileStatus.getPath().getName()); System.out.println(fileStatus.getBlockSize()); System.out.println(fileStatus.getPermission()); System.out.println(fileStatus.getLen()); BlockLocation[] blockLocations = fileStatus.getBlockLocations(); for (BlockLocation bl : blockLocations) { System.out.println("block-length:" + bl.getLength() + "--" + "block-offset:" + bl.getOffset()); String[] hosts = bl.getHosts(); for (String host : hosts) { System.out.println(host); } } System.out.println("--------------为angelababy打印的分割线--------------"); } } /** * 查看文件及文件夹信息 * * @throws IOException * @throws IllegalArgumentException * @throws FileNotFoundException */ @Test public void testListAll() throws FileNotFoundException, IllegalArgumentException, IOException { FileStatus[] listStatus = fs.listStatus(new Path("/")); String flag = "d-- "; for (FileStatus fstatus : listStatus) { if (fstatus.isFile()) flag = "f-- "; System.out.println(flag + fstatus.getPath().getName()); } } }
-
在maven中配置了好多jdk是1.6的项目,但是devcloud使用的最低是jdk1.7,这个怎么破?
-
8.1 JAVA SDK 使用指南中提到需安排Maven插件:m2e - Maven Integration for Eclipse (includes Incubating components),网上资料很不一致,可否给出一个简单的说明谢谢
-
Uploading: https://devrepo.devcloud.huaweicloud.com/02/nexus/content/repositories/458d05c7f60641c29565b4c5ef151740_1_0/com/icss/newretail/zhmd-api/1.0/zhmd-api-1.0.pom[INFO] ------------------------------------------------------------------------[INFO] Reactor Summary:[INFO][INFO] zhmd-api ........................................... FAILURE [ 1.675 s][INFO] common-api ......................................... SKIPPED[INFO] ai-center-api ...................................... SKIPPED[INFO] ai-center-api-service .............................. SKIPPED[INFO] ai-center-api-endpoint ............................. SKIPPED[INFO] delivery-center-api ................................ SKIPPED[INFO] delivery-center-api-service ........................ SKIPPED[INFO] delivery-center-api-endpoint ....................... SKIPPED[INFO] goods-center-api ................................... SKIPPED[INFO] goods-center-api-service ........................... SKIPPED[INFO] goods-center-api-endpoint .......................... SKIPPED[INFO] member-center-api .................................. SKIPPED[INFO] member-center-api-service .......................... SKIPPED[INFO] member-center-api-endpoint ......................... SKIPPED[INFO] pay-center-api ..................................... SKIPPED[INFO] pay-center-api-service ............................. SKIPPED[INFO] pay-center-api-endpoint ............................ SKIPPED[INFO] promotion-center-api ............................... SKIPPED[INFO] promotion-center-api-service ....................... SKIPPED[INFO] promotion-center-api-endpoint ...................... SKIPPED[INFO] trade-center-api ................................... SKIPPED[INFO] trade-center-api-service ........................... SKIPPED[INFO] trade-center-api-endpoint .......................... SKIPPED[INFO] user-center-api .................................... SKIPPED[INFO] user-center-api-service ............................ SKIPPED[INFO] user-center-api-endpoint ........................... SKIPPED[INFO] ------------------------------------------------------------------------[INFO] BUILD FAILURE[INFO] ------------------------------------------------------------------------[INFO] Total time: 2.716 s[INFO] Finished at: 2019-04-01T21:17:35+08:00[INFO] Final Memory: 46M/354M[INFO] ------------------------------------------------------------------------[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project zhmd-api: Failed to deploy artifacts: Could not transfer artifact com.icss.newretail:zhmd-api:pom:1.0 from/to releases (https://devrepo.devcloud.huaweicloud.com/02/nexus/content/repositories/458d05c7f60641c29565b4c5ef151740_1_0/): Failed to transfer file: https://devrepo.devcloud.huaweicloud.com/02/nexus/content/repositories/458d05c7f60641c29565b4c5ef151740_1_0/com/icss/newretail/zhmd-api/1.0/zhmd-api-1.0.pom. Return code is: 401, ReasonPhrase: . -> [Help 1][ERROR]其中setting.xml文件,是在网站上下载的,检查了用户名密码是配置了的。 deploy失败的可能原因是啥? 还需要做什么设置吗?
-
[转载]Maven依赖的JAR包下载慢?赶紧看过来2019年03月27日 16:24:01 DevCloud 阅读数:25更多个人分类: 技术交流文:华为云DevCloud 亲亲土豆相信许多JAVA开发者在日常工作中时常会碰到这种情况,那就是编译Maven工程时,工程所依赖的jar包文件下载非常慢,甚至经常出现下载不成功的问题,今天,小编就给大家讲讲如何提升Maven依赖包的下载速度由于Maven工程默认配置的依赖仓库主要部署在国外,从国内下载速度较慢,国内许多高校或公司通过架设开源镜像站来解决该问题,这些镜像站一般都是向国内开发者开放的,我们可以通过配置国内的镜像来解决下载速度慢的问题。所谓开源镜像站,指的是存放开源操作系统、开源组件等镜像文件的站点,国内的镜像站通过定期/实时同步国外源站的开源操作系统或组件,为国内用户提供高速、稳定的依赖包下载服务。目前国内比较常用的镜像站包括华为开源镜像站、清华大学镜像站、中科大镜像站等等,今天主要以华为开源镜像站为示例给大家进行讲解方式一,配置针对所有项目的全局镜像库在Maven安装目录下找到Maven的配置文件setting.xml,里面有个<mirrors>配置项目,这里配置了所有的全局镜像,你可以在<mirrors>下增加以下节点:<mirror> <id>huaweicloud</id> <mirrorOf>*</mirrorOf> <url>https://mirrors.huaweicloud.com/repository/maven/</url></mirror>如下图所示:需要注意的是,<mirrors>下配置了多个镜像库时,只有当第一个镜像库无法连接时,才会使用第二个镜像库查找jar文件,否则即使第一个镜像库里找不到想的jar文件,也不会去第二个镜像库查找。因此,若需要配置多个镜像库,可将<mirrorOf>设置为*,!repo1,在<profiles>标签中增加个性化配置,并在<activeProfiles>标签中将其激活,完整如下图所示:方式二,配置针对单个项目的镜像库 在项目的maven配置文件pom.xml里,添加repositories配置即可,如下:<repositories><repository><id>huaweicloud</id><name>huaweicloud</name><url>>https://mirrors.huaweicloud.com/repository/maven/</url></repository></repositories>如下图所示:注意:在pom.xml中配置了repository后,setting.xml文件中关于mirror部分的<mirrorOf>标签不能设置为*,否则pom.xml中的repository配置不会生效。<mirrorOf>需要配置为*,!huaweicloud将huaweicloud镜像设为例外,如下图:更多信息可以参考华为开源镜像站。来源:https://devcloud.blog.csdn.net/article/details/88848080
-
背景信息 将本地项目迁移到云上构建时,部分依赖可能无法在华为开源镜像站或软件开发云私有依赖库找到,需要从私有依赖仓库或三方仓库下载依赖,容易遇到网络不通、认证不通过等问题。此处提供一些可能的经验参考 声明:纯个人分享,对文中提到的概念、技术准确性、安全性不承担任何责任本文中提及的几种依赖仓库说明1. 华为开源镜像站- 地址:https://mirrors.huaweicloud.com/- 说明:无需配置,使用编译构建服务时,默认可从镜像站下载依赖,可满足大部分构建需求2. 软开云私有依赖库- 地址:https://devcloud.huaweicloud.com/cloudartifact/repository- 指导手册:https://support.huaweicloud.com/qs-releaseman/zh-cn_topic_0145299115.html- 说明:初次使用时需要前往私有依赖库首页初始化:https://support.huaweicloud.com/releaseman_faq/releaseman_faq_0006.html3. 公开三方仓库- 非DevCloud官方提供的仓库- 可以直接从公网访问- 无需认证(无需在settings.xml中配置认证信息)4. 需要认证的私有仓库- 搭建在私有云/本地局域网环境- 能从公网访问,但是有设置访问IP白名单限制(如果本身不具备可访问的域名或公网IP,则无法在软件开发云使用,此处不予讨论)- 需要认证(需要在settings.xml中配置认证信息)前置准备参考官方文档,创建好项目、代码仓库、Maven构建任务创建项目:https://support.huaweicloud.com/qs-codeci/codeci_qs_1001.html创建构建任务:https://support.huaweicloud.com/qs-codeci/codeci_qs_2001.html配置构建任务-使用公开三方仓库 编译构建服务提供了Action “配置Maven华为开源镜像站”,可以增加非DevCloud提供的依赖仓库。 注意:此方式目前只能配置仓库地址,不支持仓库认证信息配置,故只适合使用公开三方仓库场景操作步骤1. 在“Maven构建”前添加步骤:“配置Maven华为开源镜像站” 2. 在右侧步骤配置页新增仓库,填写完整仓库地址3. 保存任务,再次构建即可从公开三方仓库下载所需要的依赖包配置构建任务-使用需要认证的私有仓库 此类场景下,首先要解决编译构建服务于仓库之间网络通信问题,需要将构建服务器地址加入到私有仓库的IP白名单列表,确保构建服务可以访问私有仓库地址(具体可联系DevCloud);此外,由于软开云编译构建服务目前不支持三方仓库认证信息配置,需要通过其他方式自行配置,以下为操作步骤:1. 前往软开云私有依赖库下载Devcloud配置好的settings.xml文件参考文档:https://support.huaweicloud.com/usermanual-releaseman/releaseman_hlp_00004.html2. 参考步骤1中指导文档,修改下载好的settings.xml文件(DevCloud已经配置好的仓库无需修改,在原基础新增仓库信息即可)其中:- reponsitory节点中配置仓库地址、仓库ID等,仓库ID为自定义值,需要与mirrorOf、server配置中填写的仓库ID对应,如示例中的snapshots、releases即为Devcloud提供的私有仓库的ID- mirrorOf节点中,以”!仓库ID“格式增加一项,表示此仓库ID对应的仓库无需mirror代理,如!releases,!snapshots,表示releases仓库和snapshots仓库不经过mirror代理- server节点中配置ID对应仓库的认证信息3. 将修改好的settings.xml文件放置在代码pom.xml文件同级目录并提交到软开云代码仓库4. 修改构建配置,指定使用项目中自带的settings.xml文件构建如图,在构建命令后追加 --settings settings.xml 即可5. 保存任务后再次构建,即可从指定的私有依赖仓库下载所需依赖(注意:配置私有仓库认证信息时,在settings.xml直接配置明文密码可能存在一定风险,如有需要,可联系DevCloud官方咨询密码加密方式)
-
有些同学在导入CSEJavaSDK的demo工程的时候,会发现maven依赖没有导入进来。代码中很多类都是红的,显示无法找到类:此时大家可以跑一下mvn clean package构建命令,看看控制台里的输出日志:关键日志如下:Non-resolvable import POM: Failure to find com.huawei.paas.cse:cse-dependency:pom:2.3.62 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced @ line 18, column 19 -> [Help 2]可以看到,日志里显示maven在尝试从maven中央仓库拉取依赖包(这是maven的默认配置,也有可能是其他的错误地址),而不是从华为云镜像站拉取依赖。这就说明该环境上的maven setting文件没有按照Day2培训中的说明进行配置,建议大家按照操作指导再配置一下maven setting文件。
上滑加载中