热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

gradle项目打包成多个jar包_快速上手Gradle

“Gradle介绍*Gradle安装*Gradle项目创建注意事项*Gradle项目目录结构*Groovy简单语法*Gradle配置文件*Gradle使用Maven仓库*Gradl

a2f25c7cb64160d4e27f99ba5bd3320b.png

“Gradle介绍*Gradle安装*Gradle项目创建注意事项*Gradle项目目录结构*Groovy简单语法*Gradle配置文件*Gradle使用Maven仓库*Gradle构建Jar工程*Gradle构建War工程*Gradle构建聚合工程

最近的项目需要使用Gradle构建,初上手时也是一脸懵逼。不过没关系呀,咱们课余时间可以好好学习一下呀~

01

Gradle介绍

先上官网:https://gradle.org/

fb60c5608aa903ba10dc2c9ffdff380a.png

Gradle弥补Maven的不足:

Maven两个功能:1.管理Jar包。2.构建项目。

在管理jar包中,我们都知道Maven是在pom.xml中以坐标的形式去管理,一般一个Jar包的引用至少需要占两行代码以上(version可以统一管理)。虽然一般微服务的项目Jar包会相对较少,但依然会有40行往上的代码,切看起来不直观,更别说一些巨石项目了(找一个坐标要翻很久)。Gradle借用Groovy弥补了这个特性,使咱们Jar包依赖的代码更简洁且增加了编程容错性,同时由于Groovy的编程语言特性,他可以生成文件,因此也可以利用Gradle在构建时生成POM,对持物集成和服务器更友好。

02

Gradle安装

官方下载地址:https://services.gradle.org/distributions/

28d30e95f815cee2ca70f7ef2e2664f1.png


为了和项目版本一致,我就下载:gradle-4.7-bin.zip这个了。

解压好后的目录

00241d10041002e344cc7e28177906f7.png

bin目录下

d580f63d9064e59ab82efc89439f6d16.png

第一个是sh脚本,第二个是windows的执行脚本。

所以这里是我们配置环境变量的目录。

配置环境变量的操作都是相同的。

1c498dd534eac0dcb5e7c82f268a42ff.png

5077fe0ce2c716b992d66acdd6a9f9af.png

cmd里执行gradle -v ,出现类似如下信息,就说明gradle可以使用了。

88459584bf9a68435ce01e4c0c4588d6.png

第一次启动时会在C:\Users\Administrator出现.gradle的文件夹,这个就是类似Maven的.m2文件夹。

c658137bb95fbe8a27aa8775cac4542f.png

Caches文件夹作为Gradle默认的本地仓库去存储Jar包。

03

Gradle项目创建注意事项

接下来我们用idea创建一个最简单的Gradle管理项目看一下其项目结构。

进入Idea初始界面,先看看是否可以配置Gradle的默认使用。

e921c41e26a8ac0d514fdd364b223399.png

21a66f6b549a5c361f1200c244a93a54.png

发现只能配置Gradle的仓库位置,并不能确定版本,那就先不设置了。

还是回到首页先创建Gradle项目

404843331f9f3126afa5f6bda53a1d16.png

940c0b0e4ed508c8e1c31fa93e428d11.pngfinish创建Gradle项目。

2f3d6951801989a8e1fcedc305ab6f5b.png

进去之后是这个样子。

我们要设置一下使用Gradle的版本。

af7076c1022fb0c6592fa7a6e9d01f7d.png

默认使用.gradle作为默认仓库,同时使用版本读取gradle-wrapper.properties,下面是文件内容

556c8a9c02acf1ea292b4e39265a2db6.png

文件的意思是会先去读取系统变量中的%Gradle_User_Home%作为发布包/打压缩包地址,/wrapper/dists作为Gradle的下载目录,同时默认使用的是gradle6.1版本。

我们作个性化设置。

2726670c8888d7defc86ab5c34f55a68.png

使用Maven的仓库并且使用Gradle4.7。

但是这里要注意一个问题,此处设置了默认仓库只是针对Idea的,如果我们想在自己在cmd中编译打包等操作也用我们指定的仓库时,需要在系统变量中添加如下配置。

fc47593cb4aa5959a198d1aeed1e26bf.png

OK,这些基本配置好后就可以开始玩Gradle了。

04

Gradle项目目录结构

c55e13b86bd6f0edafa7ea42f9c02bc3.png

可以看到项目里是没有Pom文件的,相对的会有一个build.gradle以及settings.gradle。另外还会有一个专门的gradle文件包,目前里面只装了wrapper(包装者?)里面的配置我们上面有贴出来。项目主体src下的内容和Maven创建时没有什么不同。

8001715fc540144595082a481cf17c9d.png

05

Groovy简单语法

这里先不说这些配置文件里面的内容,因为这里面的内容都是用Groovy语言编写的,先大概了解了语言我们才能明白配置文件里写了什么。

a10e8305023c7a23f0f9744ad2abff18.png

看到其结合语言就知道,Groovy是追求容错低的弱语言。

Groovy 是 用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。

Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 Groovy 与 Java 代码的互操作很容易。(注意:不是指Groovy替代java,而是指Groovy和java很好的结合编程。

大概先看这些了解一下,我们这里追求快速了解哈。

cf350d0b7c82acbb88e043b11931294c.png

先使用Idea默认的Groovy控制台来编写代码,直接上代码和结果了。

代码

//介绍Groovy//支持Java语言编程System.out.println("hello Groovy");//Groovy自己的编程方式println("hello Groovy");//Groovy可以省略末尾分号println("hello Groovy")//Groovy可以省略末尾分号println "hello Groovy"//Groovy中定义简单变量//def是弱类型&#xff0c;groovy会根据情况来赋值的类型def i &#61; 18println i&#43;1def s &#61; "小明"println s&#43;1//Groovy中定义复杂变量//定义集合类型,注意这里单双引号都是一个效果def list &#61; [&#39;a&#39;,"b"]//往list中添加元素list <<&#39;c&#39;//取出第三个元素println list.get(2)//定义一个mapdef map &#61; [&#39;key1&#39;:&#39;value1&#39;,&#39;key2&#39;:&#39;value2&#39;]//向map中添加键值对map.key3 &#61; &#39;value3&#39;//打印key3的值println map.get(&#39;key3&#39;)

结果

hello Groovyhello Groovyhello Groovyhello Groovy19小明1cvalue3

好的&#xff0c;简单的说完了&#xff0c;我们再讲个groovy中的闭包(类似Java中的函数式编程)

无参数闭包调用

//Groovy中的闭包//闭包其实是一段代码块。在闭包中&#xff0c;我们主要把闭包当参数来使用//定义一个闭包def b1 &#61; { println "hello b1"}//定义一个方法&#xff0c;方法里面需要闭包类型的参数def method1(Closure closure){ closure()}//调用method1method1(b1)

结果

hello b1

有参数的闭包调用

//定义一个闭包&#xff0c;带参数def b2 &#61; { v -> println "hello ${v}"}//定义一个方法&#xff0c;方法里面需要闭包类型的参数def method2(Closure closure){    closure("小pw")}//调用method2method2(b2)

输出

hello 小pw

06

Gradle配置文件

接下来我们看下Gradle配置文件以及如何使用。

打开build.gradle文件如下

963ae84dfd116743070366fc7bff5f6b.png

这里做一个注解

//当前项目运行环境plugins { id &#39;java&#39;}//项目的坐标group &#39;cn.pw&#39;version &#39;1.0-SNAPSHOT&#39;//指定仓库的路径//mavenCentral()默认只使用远程中央仓库去拉取jar包&#xff0c;下载到我们指定的本地仓库repositories { mavenCentral()}//gradle中所有的jar包的坐标都在dependencies属性内放置//每个jar包的坐标有三个基本元素对应Maven中的坐标//group name version//testCompile表示该jar包在测试时起作用//我们在gradle添加坐标时都要带上jar包的作用域dependencies { testCompile group: &#39;junit&#39;, name: &#39;junit&#39;, version: &#39;4.12&#39;}

然后假如我们要使用spring的jar包&#xff0c;过程应该如下。

先去maven中央仓库地址&#xff1a;https://mvnrepository.com/

27ed3591f1ee53eaaeaa0266b758716c.png

搜索spring&#xff0c;选取spring framework

8b3bc09586e9183b02751f15ef1c2a11.png

选取版本

cd8d8bcf904b0e93411915194e88e1d5.png

选取gradle

a329e636cde280074a86f6b57576858c.png

下面的内容就是gradle的坐标格式了&#xff0c;复制粘贴到build.gradle中就好。

712194fdfc1eaaf9d6e9d2dc1b0825ba.png

OK&#xff0c;这样一个依赖就加好了。

07

Gradle使用Maven仓库

从groovy语法可以知道&#xff0c;其实配置文件中的内容都是方法&#xff0c;比如mavenCentral()&#xff0c;我们按住ctrl点击进去&#xff0c;可以看到类和方法&#xff0c;和java一样。

2f813911c758d57eba1a40accadcdb88.png

我们看到其中有一个方法是mavenLocal()&#xff0c;这个方法就是调用本地仓库去拉取jar包&#xff0c;因此我们可以在代码中作如下更改。

//指定仓库的路径//mavenCentral()默认只使用远程中央仓库去拉取jar包&#xff0c;下载到我们指定的本地仓库repositories { //先去本地仓库拉取Jar包 mavenLocal() //本地仓库拉取不到去中央仓库拉取Jar包 mavenCentral()}

这样&#xff0c;我们就可以先使用Maven本地仓库的Jar包啦。

08

Gradle构建Jar工程

上代码测试

build.gradle

//当前项目运行环境plugins { id &#39;java&#39;}//项目的坐标group &#39;cn.pw&#39;version &#39;1.0-SNAPSHOT&#39;//指定仓库的路径//mavenCentral()默认只使用远程中央仓库去拉取jar包&#xff0c;下载到我们指定的本地仓库repositories { //先去本地仓库拉取Jar包 mavenLocal() //本地仓库拉取不到去中央仓库拉取Jar包 mavenCentral()}//解决gradle控制台乱码的问题tasks.withType(JavaCompile) { options.encoding &#61; "UTF-8"}//gradle中所有的jar包的坐标都在dependencies属性内放置//每个jar包的坐标有三个基本元素对应Maven中的坐标//group name version//testCompile表示该jar包在测试时起作用//我们在gradle添加坐标时都要带上jar包的作用域dependencies { testCompile group: &#39;junit&#39;, name: &#39;junit&#39;, version: &#39;4.12&#39; // https://mvnrepository.com/artifact/org.springframework/spring compile group: &#39;org.springframework&#39;, name: &#39;spring&#39;, version: &#39;2.5.6&#39;}

dao

package cn.pw;import java.util.List;public interface gradleDao { public List findAll();}

daoImpl

package cn.pw;import java.util.LinkedList;import java.util.List;public class gradleDaoImpl implements gradleDao{ &#64;Override public List findAll() { LinkedList stringLinkedList &#61; new LinkedList<>(); stringLinkedList.add("hello World"); System.out.println("列表查询成功"); return stringLinkedList; }}

test

import cn.pw.gradleDao;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class GradleJarTest { &#64;Test public void gradlejarTest() { //得到Spring容器 ApplicationContext applicationContext &#61; new ClassPathXmlApplicationContext("bean.xml"); //从容器中拿对象 gradleDao gradleDao &#61; (cn.pw.gradleDao) applicationContext.getBean("gradleDao"); //对象执行方法 gradleDao.findAll(); }}

启动参数

-Dfile.encoding&#61;utf-8

输出

Testing started at 上午 1:41 ...> Task :compileJava UP-TO-DATE> Task :processResources> Task :classes> Task :compileTestJava> Task :processTestResources NO-SOURCE> Task :testClasses> Task :test六月 26, 2020 1:41:10 上午 org.springframework.context.support.AbstractApplicationContext prepareRefresh信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext&#64;53500d47: display name [org.springframework.context.support.ClassPathXmlApplicationContext&#64;53500d47]; startup date [Fri Jun 26 01:41:10 GMT&#43;08:00 2020]; root of context hierarchy六月 26, 2020 1:41:10 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions信息: Loading XML bean definitions from class path resource [bean.xml]六月 26, 2020 1:41:11 上午 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory信息: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext&#64;53500d47]: org.springframework.beans.factory.support.DefaultListableBeanFactory&#64;65f56674六月 26, 2020 1:41:11 上午 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons信息: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory&#64;65f56674: defining beans [gradleDao]; root of factory hierarchy列表查询成功BUILD SUCCESSFUL in 2s4 actionable tasks: 3 executed, 1 up-to-date上午 1:41:11: Task execution finished &#39;:test --tests "GradleJarTest.gradlejarTest" -Dfile.encoding&#61;utf-8&#39;.

打Jar包

9293aaf0ea4c2f52e0471c57e6cf5332.png

输出

上午 1:42:19: Executing task &#39;jar&#39;...> Task :compileJava UP-TO-DATE> Task :processResources> Task :classes> Task :jar UP-TO-DATEBUILD SUCCESSFUL in 0s3 actionable tasks: 1 executed, 2 up-to-date上午 1:42:20: Task execution finished &#39;jar&#39;.

jar包位置

6baf3c103c8c18a156d64089825cd215.png

09

Gradle构建War工程

web工程创建和jar是一样的&#xff0c;只是需要自己在src下创建webapp以及在build.gradle中添加war包类型即可。

06e5dec4c556dc00e015876856478af6.png

813625419871105df844ebbd973cb954.png

web.xml

springmvcservlet-name> org.springframework.web.servlet.DispatcherServletservlet-class> contextConfigLocationparam-name> classpath:springmvc.xmlparam-value> init-param> servlet> springmvcservlet-name> /url-pattern> servlet-mapping>web-app>

springmvc.xml

bean> beans>

controller

package cn.pw.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;&#64;Controller&#64;RequestMapping("hello")public class HelloController { &#64;RequestMapping("index") public String toindex(){ return "index"; }}

index.jsp

<%&#64; page contentType&#61;"text/html; charset&#61;UTF-8" language&#61;"java" %>body>html>

index.jsp

Hello World!h2>body>html>

本机 tomcat启动后的输出

a0b335eef6ac2e7b71b76fe9b5d25ebe.png

打war包

9267be3d032f2cbf9702a34e7514700f.png

8ccdcbabb0c46639b9d52cf32efbc5a0.png

10

Gradle构建聚合工程

聚合工程是最重要的&#xff0c;因为一般项目里都会是这个模式,类似于Maven的聚合&#xff0c;也是由Parent管理子模块的共性Jar包。具体如何创建我们来看下。

首先创建父工程和一般的项目一样。

f79aad4784b2155ccb2a51fbc1ddb6b6.png

然后对着项目右键newModule,操作差不多&#xff0c;改个名字就好。

9d8f2bb48a1d89c557864a9d2f9f3319.png

出现子项目&#xff0c;且在父工程的settings.gradle文件中包含子模块信息。

如法再建一个web

06231c51c179d1f8ef9a84cbf2e55385.png

我们将web还是变成war工程

cf47eabe9e89485f9f5147cde9b6ba34.png

再创建一个service

fc3476b2e0f0686d0e4cd399708a6b1e.png

把之前的web工程的配置都拷贝过来。

6fa567bc6559214dcbfffa5b9f7a9259.png

然后开始导jar包&#xff0c;这里共同jar包要放到父工程中&#xff0c;添加allprojects标签。

父工程build.gradle

allprojects { apply plugin: &#39;java&#39; group &#39;cn.pw&#39; version &#39;1.0-SNAPSHOT&#39; repositories { mavenLocal() mavenCentral() } dependencies { testCompile group: &#39;junit&#39;, name: &#39;junit&#39;, version: &#39;4.12&#39;// https://mvnrepository.com/artifact/org.springframework/spring compile group: &#39;org.springframework&#39;, name: &#39;spring&#39;, version: &#39;5.2.0.RELEASE&#39;, ext: &#39;pom&#39; // https://mvnrepository.com/artifact/org.springframework/spring-web compile group: &#39;org.springframework&#39;, name: &#39;spring-web&#39;, version: &#39;5.0.2.RELEASE&#39;// https://mvnrepository.com/artifact/org.springframework/spring-webmvc        compile group: &#39;org.springframework&#39;, name: &#39;spring-webmvc&#39;, version: &#39;5.0.2.RELEASE&#39; }}

然后去除子模块中相同的配置项比如daoProject

5ad62e1309b63e228cbdbc5c7419b38e.png

这些父工程都有&#xff0c;可以先清掉&#xff0c;以后有个性化配置可以给每个子工程自己的build.gradle里面加&#xff0c;和Maven类似。

serviceProject需要引入daoProject的坐标。

dependencies { compile project(":daoProject")}

webProject则需要保留打war包的配置和serviceProject坐标引入&#xff0c;以及serverlet坐标

apply plugin: &#39;war&#39;dependencies { compile project(":serviceProject") // https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api providedCompile group: &#39;javax.servlet&#39;, name: &#39;javax.servlet-api&#39;, version: &#39;3.0.1&#39;// https://mvnrepository.com/artifact/javax.servlet/jsp-api providedCompile group: &#39;javax.servlet&#39;, name: &#39;jsp-api&#39;, version: &#39;2.0&#39;}

配置完毕&#xff0c;把之前jar工程和war工程的代码贴过来跑吧~

web

1cfa0f079c63038313503433ccd7585e.png

web改一下springmvc.xml

b02b53189ccc69fad9577b545a5300fc.png

controller

package cn.pw.controller;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import cn.pw.service.HelloSerivce;&#64;Controller&#64;RequestMapping("hello")public class HelloController { &#64;Autowired private HelloSerivce helloService; &#64;RequestMapping("index") public String toindex(Model model){ String hello &#61; helloService.sayHello(); model.addAttribute("hello",hello); return "index"; }}

service

0506bb8dc89910387889d08f58385e72.png

Helloservice

package cn.pw.service;public interface HelloSerivce { public String sayHello();}

HelloserviceImpl

package cn.pw.service.impl;import cn.pw.service.HelloSerivce;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import cn.pw.HelloDao;&#64;Servicepublic class HelloServiceImpl implements HelloSerivce { &#64;Autowired private HelloDao helloDao; &#64;Override public String sayHello() { return helloDao.sayHello(); }}

dao

d267a52ce307feacd18ec5d63dfed8b3.png

HelloDao

package cn.pw;public interface HelloDao { public String sayHello();}

HelloDaoImpl

package cn.pw;import org.springframework.stereotype.Repository;&#64;Repositorypublic class HelloDaoImpl implements HelloDao { &#64;Override public String sayHello() { return "Moudle Hello"; }}

用tomcat把web跑起来后页面如图

8a9a51f3368b0d856540fc7dca7c63d8.png

如果想打包&#xff0c;对着parent去build就可以啦

2ed45b381a242c820d65c2a995f36d4d.png

73f267b4afe3e0d4f1fcb355bd89b69c.png

58b4253d1f8a7c8346a005347cd5d372.png

OK&#xff0c;今天就分享到这里啦~

项目源码&#xff1a;

https://github.com/pengwenqq/studyDemo




推荐阅读
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • 基于JSP和SSM框架的超市收银系统毕业设计论文及源代码分析
    本研究基于JSP和SSM框架开发了一套超市收银系统,旨在提升超市收银效率和管理便捷性。系统运行环境包括JDK 1.8、Tomcat 7.0、MySQL数据库以及HBuilderX(也可使用WebStorm)作为前端开发工具,后端开发则采用Eclipse(IntelliJ IDEA亦可)。该系统实现了商品管理、订单处理、库存管理和报表生成等核心功能,具有良好的稳定性和扩展性。通过详细的设计与实现过程,本文为相关领域的研究提供了有价值的参考。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 本文深入探讨了如何利用Maven高效管理项目中的外部依赖库。通过介绍Maven的官方依赖搜索地址(),详细讲解了依赖库的添加、版本管理和冲突解决等关键操作。此外,还提供了实用的配置示例和最佳实践,帮助开发者优化项目构建流程,提高开发效率。 ... [详细]
  • 本文详细介绍了在Linux系统上编译安装MySQL 5.5源码的步骤。首先,通过Yum安装必要的依赖软件包,如GCC、GCC-C++等,确保编译环境的完备。接着,下载并解压MySQL 5.5的源码包,配置编译选项,进行编译和安装。最后,完成安装后,进行基本的配置和启动测试,确保MySQL服务正常运行。 ... [详细]
  • Apache Hadoop HDFS QJournalProtocol 中 getJournalCTime 方法的应用与代码实例分析 ... [详细]
  • 开发日志:201521044091 《Java编程基础》第11周学习心得与总结
    开发日志:201521044091 《Java编程基础》第11周学习心得与总结 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
author-avatar
风尚宣城_588
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有