使用Maven对Java独立应用程序进行编译打包

2024-05-09 07:44

本文主要是介绍使用Maven对Java独立应用程序进行编译打包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、 安装Maven

1.解压,移动安装包
sudo tar -zxf ~/apache-maven-3.9.6-bin.tar.gz -C /usr/local/
cd /usr/local/
sudo mv apache-maven-3.9.6/ ./maven-3.9.6
sudo chown -R qiangzi ./maven-3.9.6

二、Java应用程序代码

1.版本信息:

Spark-2.1.0、Maven-3.9.6

(1)在终端执行命令创建文件夹sparkapp2作为应用程序根目录
cd ~ #进入用户主文件夹
mkdir -p ./sparkapp2/src/main/java
(2)在 ./sparkapp2/src/main/java 下建立一个名为 SimpleApp.java 的文件
cd ~
vim ./sparkapp2/src/main/java/SimpleApp.java

        添加代码如下:

/*** SimpleApp.java ***/
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.SparkConf;public class SimpleApp {                                                                                                    public static void main(String[] args) {String logFile = "file:///usr/local/spark-2.1.0/README.md"; // Should be some file on your systemSparkConf conf=new SparkConf().setMaster("local").setAppName("SimpleApp");JavaSparkContext sc=new JavaSparkContext(conf);JavaRDD<String> logData = sc.textFile(logFile).cache();long numAs = logData.filter(new Function<String, Boolean>() {public Boolean call(String s) { return s.contains("a"); }}).count();long numBs = logData.filter(new Function<String, Boolean>() {                                                               public Boolean call(String s) { return s.contains("b"); }                                                           }).count();                                                                                                             System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);                                          }                                                                                                                   }  
(3)该程序依赖Spark Java API,通过Maven进行编译打包。在./sparkapp2目录中新建文件pom.xml,命令如下:
cd ~/sparkapp2
vim pom.xml
(4)在pom.xml文件中添加内容如下,声明该独立应用程序的信息以及与Spark的依赖关系:
<project><groupId>cn.edu.xmu</groupId><artifactId>simple-project</artifactId><modelVersion>4.0.0</modelVersion><name>Simple Project</name><packaging>jar</packaging><version>1.0</version><repositories><repository><id>jboss</id><name>JBoss Repository</name><url>http://repository.jboss.com/maven2/</url></repository></repositories><dependencies><dependency> <!-- Spark dependency --><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId> //这里是 Spark 的核心库,针对 Scala 2.11 版本。<version>2.1.0</version> //这里是 2.1.0 版本的 Spark</dependency></dependencies>
</project>
2. 使用Maven打Java程序
(1)为了保证maven能够正常运行,先执行如下命令检查整个应用程序的文件结构:
cd ~/sparkapp2
find .
(2)文件结构如下图:

(3)接着,我们可以通过如下代码将这整个应用程序打包成Jar(注意:电脑需要保持连接网络的状态,而且首次运行需要下载依赖包,时间消耗太长):
cd ~/sparkapp2
/usr/local/maven-3.9.6/bin/mvn package
(4)如出现下信息,说明生成Jar包成功:

(5)如果运行Maven编译打包过程很慢,是因为需要到国外网站下载很多的依赖包,国外网站速度很慢,可以更改为国内的仓库地址,修改Maven的配置文件,让Maven到国内的阿里云仓库下载相关依赖,提高打包的速度。
cd /usr/local/maven-3.9.6/conf
vim settings.xml
(6)将settings.xml中的文本改为以下内容:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0http://maven.apache.org/xsd/settings-1.0.0.xsd">
<mirrors><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云谷歌仓库</name><url>https://maven.aliyun.com/repository/google</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云阿帕奇仓库</name><url>https://maven.aliyun.com/repository/apache-snapshots</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云spring仓库</name><url>https://maven.aliyun.com/repository/spring</url></mirror><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云spring插件仓库</name><url>https://maven.aliyun.com/repository/spring-plugin</url></mirror>
</mirrors>
</settings>
3.通过spark-submit 运行程序
(1)最后,可以通过将生成的jar包通过spark-submit提交到Spark中运行,如下命令:
/usr/local/spark-2.1.0/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar
# 上面命令执行后会输出太多信息,使用下面命令查看想要的结果
/usr/local/spark-2.1.0/bin/spark-submit --class "SimpleApp" ~/sparkapp2/target/simple-project-1.0.jar 2>&1 | grep "Lines with a"
(2)得到的结果如下:

这篇关于使用Maven对Java独立应用程序进行编译打包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/972806

相关文章

spring boot整合ElascticSearch

忙了一天,继续我们的spring boot之旅,这一篇,我们主要讲解ElascticSearch在spring boot中的使用..使用起来很简单,也没有前面的什么集群和单机配置,但是我特么竟然没成功...服务器上的版本太低和本地ElascticSearch.jar包不匹配,改了半天不是影响这就影响那的....懒得弄了!就直接说下整个配置过程吧,别喷我,其实我还是挺负责的!... 等下次项目用到

spring boot整合redis(单机+集群)

如果使用的是redis2.x,在项目中使用客户端分片(Shard)机制,已经很久之前的版本,该换新了(此处略过), 本文讲解基于redis3.x中的集群,通过两部分来阐述spring boot整合redis,在项目中使用jedisCluster机制。 第一部分:spring boot自带整合的redis,比较简单,看下来 1>不用多说,pom.xml文件增加redis与spring boot

spring boot整合memcached

官方术语:           Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

spring boot整合slf4j-log日志

又过了一天,研究spring boot的学习还得继续,今天说点啥呢?spring boot整合slf4j-log日志,不得不吐槽spring boot按照它默认的方式太难控制了,或许这也是他的敏捷之处(不要自定义,按我的做就行),可是我不喜欢.好了,说事   spring boot的对于一些自定义的配置,一般都会提供application.properties和自定义xml文件的配置,log也

spring boot静态资源文件的访问以及自定义

上一节出现的页面是不是很丑?我才不告诉你,我把背景都处理了, 相关的项目结构,如下 好吧.来看看最终的页面源码 <!DOCTYPE HTML><html><head><#include "/common/common.ftl" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta na

spring boot整合freemark

用过freemark的童孩都知道,freemark与spring的整合,需要在spring配置文件中配置freemrak的解析,原配置内容如下图: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.o

Java 虚拟机详解——Java虚拟机、垃圾回收、内存分配策略

文章目录 一、运行时数据区域程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存 二、垃圾收集判断一个对象是否可被回收1. 引用计数算法2. 可达性分析算法3. 方法区的回收4. finalize() 引用类型1. 强引用2. 软引用3. 弱引用4. 虚引用 垃圾收集算法1. 标记 - 清除2. 标记 - 整理3. 复制4. 分代收集 垃圾收集器1. Serial 收集器2.

Java中的synchronized关键字详解

Java中的synchronized关键字详解 1. 引言 在Java编程中,多线程是提高应用性能的重要手段之一。然而,多线程环境下共享资源的访问控制成为必须面对的问题。synchronized关键字作为Java语言提供的一种同步机制,能够有效地解决这一问题。本文将深入探讨synchronized的用法和最佳实践。 2. Java并发基础 Java并发编程是现代软件开发中不可或缺的一部分,

Maven导入源代码及启动Tomcat

导入语:以前做文档的时候,全部写在Word中,翻阅了很多资料,大家都在使用CSDN,这样也方便大家查阅,方便你我他。这是写的第一篇博客,纪念下。 在使用eclipse工具时,要敲代码,那么就需要导入项目,此时就想到了Maven,以下是操作步骤: 第1步:打开eclipse工具,在左侧空白区域右击,选择import。 第2步:选择Maven进行导入源代码,点击next; 第3步:

浏览器运行原理:网页被解析过程、script元素和页面解析的关系、defer和async使用;V8引擎执行原理(执行js)

一、浏览器渲染页面的流程 1.如何找到服务器 2.找到服务器如何下载对应的静态资源  输入完服务器地址,下载下来的一般是html文件,在解析html文件过程中,遇到link引用了css文件,就下载对应的css文件,js文件同理 3.一个index.html文件被下载下来后,如何被解析和显示在浏览器上的        1.解析html,会构建对应的DOM Tree  2