Maven下Scala和Java混合打包

4 篇文章 0 订阅

楔子

Maven下Scala和Java混合打包 ,相关配置文件当独提取出来,依赖的jar包也使用meavn拷贝到一个lib目录下

效果

打包命令
 mvn clean scala:compile  compile package
-- 下面这个 比上面多 dependency:copy-dependencies -DoutputDirectory=target/lib 表示吧依赖的jar 打包到 lib目录下
 mvn clean scala:compile dependency:copy-dependencies -DoutputDirectory=target/lib compile package

拷贝依赖的jar到lib目录

mvn dependency:copy-dependencies -DoutputDirectory=target/lib

在这里插入图片描述
在这里插入图片描述

打包 配置文件 ${project.build.directory}/config 说明

<targetPath>${project.build.directory}/config</targetPath>
如果启用  <targetPath>${project.build.directory}/config</targetPath>那么,打包之后 jar包不会包含这些配置文件,配置文件会出现在  target\config 目录下

在这里插入图片描述

pom文件

	<properties>
		<!-- 文件拷贝时的编码 -->
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<!-- 编译时的编码 -->
		<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
		<joda-time.version>2.9.9</joda-time.version>
	</properties>
	<dependencies>

		<!-- 时间 -->
		<dependency>
			<groupId>joda-time</groupId>
			<artifactId>joda-time</artifactId>
			<version>${joda-time.version}</version>
		</dependency>

		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.6</version>
		</dependency>
	 
		<!-- 打包scala 这个不可少 -->
		<dependency>
			<groupId>org.scala-lang</groupId>
			<artifactId>scala-library</artifactId>
			<version>2.11.12</version>
		</dependency>
		<dependency>
			<groupId>org.scala-lang</groupId>
			<artifactId>scala-compiler</artifactId>
			<version>2.11.12</version>
		</dependency>

	</dependencies>

	<build>

		<resources>
			<!-- 解决打包时候Mapper.xml没进入 dao.class目录 (报错提示org.apache.ibatis.binding.BindingException: Invalid bound statement) -->
			<resource>
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>


			<!-- 控制资源文件的拷贝 -->
			<resource>
				<directory>src/main/resources</directory>
				<includes>
					<include>**/*.properties</include>
					<include>**/*.xml</include>
					<include>**/**</include>
				</includes>
				<!--<filtering>false</filtering>-->
				<!-- && 在IDE中运行要把这个给注释掉,因为IDEA打包 默认路劲是 classes ,有下面这行 会把配置文件转移到其他目录 -->
				<!-- TODO 在IDE 运行要把这个去掉  -->
				<targetPath>${project.build.directory}/config</targetPath>
			</resource>

		</resources>
		<plugins>

			<!-- TODO 打包命令 -->
			<!--  mvn clean scala:compile compile package -->
			<!--  mvn clean scala:compile dependency:copy-dependencies -DoutputDirectory=target/lib compile package -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.6.1</version>
				<configuration>
					<!-- 编译时使用的JDK版本和UTF8编码 -->
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>


			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<version>3.0.2</version>
				<configuration>
					<archive><!-- 清单文件 -->
						<manifest>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
							<mainClass>com.zhuzi.DemoApp</mainClass>
						</manifest>
						<manifestEntries><!-- 给清单文件添加键值对(配置文件外置) -->
							<Class-Path>config/</Class-Path>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>

			<!-- scala 打包配置  -->
			<plugin>
				<groupId>net.alchim31.maven</groupId>
				<artifactId>scala-maven-plugin</artifactId>
				<version>3.1.0</version>
			</plugin>
			<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
			<!--  拷贝依赖的jar到lib目录(如果不配置可以使用  如下命令 把 依赖的jar 拷贝出来)  -->
			<!-- mvn dependency:copy-dependencies -DoutputDirectory=target/lib-->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>3.0.1</version>
				<executions>
					<execution>
						<phase>package</phase>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<configuration>
							<outputDirectory>${project.build.directory}/lib</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- 解决资源文件的编码问题 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>3.1.0</version>
				<configuration>
					<encoding>${project.build.sourceEncoding}</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>


	<repositories>
		<repository>
			<id>nexus-aliyun</id>
			<name>Nexus aliyun</name>
			<url>http://maven.aliyun.com/nexus/content/groups/public</url>
			<releases>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			</releases>
			<snapshots>
				<enabled>true</enabled>
				<updatePolicy>always</updatePolicy>
			</snapshots>
		</repository>
	</repositories>
</project>

参考

https://www.jianshu.com/p/9aecdfd23594
java -cp https://www.cnblogs.com/people/p/3176761.html

使用maven给spring项目打可直接运行的jar包(配置文件内置外置的打法)https://www.cnblogs.com/hdwang/p/5418747.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Spark本地开发环境搭建需要以下步骤: 1. 安装Java JDK和Scala:首先需要安装Java JDK和Scala,可以从官网下载安装包进行安装。 2. 安装MavenMaven是一个项目管理工具,可以从官网下载安装包进行安装。 3. 下载Spark:从官网下载Spark的二进制包,解压到本地目录。 4. 配置环境变量:将JavaScalaMaven的bin目录添加到系统环境变量中。 5. 配置Spark:在Spark的conf目录下,将spark-env.sh.template文件复制一份并重命名为spark-env.sh,然后编辑该文件,设置JAVA_HOME、SCALA_HOME和SPARK_HOME等环境变量。 6. 编写Spark应用程序:使用ScalaJava编写Spark应用程序,并使用Maven进行依赖管理和打包。 7. 运行Spark应用程序:使用spark-submit命令提交Spark应用程序,即可在本地运行Spark应用程序。 以上就是Spark本地开发环境搭建的步骤。 ### 回答2: Spark是一个用于大数据处理的强大框架,但在开始实际工作之前,首先需要为Spark构建本地开发环境。在本文中,我将向您介绍如何搭建基于MavenScalaJava的本地Spark开发环境。 第一步:安装Java Spark依赖于Java进行开发和运行。因此,必须先安装Java。您可以从Oracle官网下载Java JDK。安装完成后,请确保已将JAVA_HOME环境变量设置为JDK的安装路径。 第二步:安装Scala Scala是一种支持面向对象和函数式编程的高级编程语言。在Spark开发中,Scala最常用。要安装Scala,请按照Scala官方安装指南安装Scala,并将其放入系统路径中。 第三步:安装Maven MavenJava项目的依赖管理器。它可以下载项目所需的所有依赖项,并将它们自动放置在项目的类路径下,以加速开发和构建过程。请前往Maven官方网站下载并安装Maven,并将其添加到系统路径中。 第四步:下载Spark 在Spark官网下载Spark。解压缩下载的Spark二进制文件并将其放入系统路径中。 第五步:创建示例应用程序 在本地实例中创建一个Spark示例应用程序。为此,首先创建一个Maven项目,并将以下依赖项添加到项目的POM.xml文件中: ``` <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.10</artifactId> <version>1.6.1</version> </dependency> ``` 使用Scala创建Spark应用程序,并将其保存在src/main/scala目录下: ``` import org.apache.spark.{SparkConf, SparkContext} object ExampleApp { def main(args: Array[String]) { val conf = new SparkConf().setAppName("ExampleApp").setMaster("local[2]") val sc = new SparkContext(conf) val data = Array(1, 2, 3, 4, 5) val rdd = sc.parallelize(data) val result = rdd.reduce(_ + _) println(result) sc.stop() } } ``` 第六步:构建项目 使用Maven进行构建,编译并将项目打包成jar文件。要构建项目,请在项目根目录下运行以下命令: ``` mvn package ``` 第七步:运行Spark应用程序 在项目目录中,使用以下命令运行Spark应用程序: ``` ./bin/spark-submit --class ExampleApp target/ExampleApp-1.0-SNAPSHOT.jar ``` 恭喜!你已经成功地创建了一个基于MavenScalaJava的本地Spark开发环境。现在您可以使用您的Spark应用程序和环境去探索和开发更多有趣的大数据应用程序。 ### 回答3: Spark是一个专门针对大规模数据处理的计算引擎,其本身需要依赖于JavaScala等编程语言来实现数据处理的应用,因此需要在本地搭建开发环境来进行Spark的开发。 以下是搭建Spark本地开发环境的步骤: 第一步:安装Java开发环境(JDK) 在Spark中,需要使用Java 8或更高版本,因此需要在本地安装Java开发环境。为了避免不同版本之间的冲突,建议使用Oracle JDK。 第二步:安装Scala Scala是Spark的支持语言之一,因此需要安装Scala。你可以在Scala官网上选择合适的版本来进行安装。安装Scala之后可以使用命令行来测试Scala是否成功。 第三步:安装Maven Maven是一个项目管理和构建工具,用于处理依赖关系,并生成可执行的Jar包。在Spark的开发过程中通常使用Maven进行依赖管理和打包。你可以在Maven官网上下载安装包,安装完成后可使用命令行测试Maven是否成功。 第四步:安装Spark 安装Spark需要先下载Spark源代码包,选择合适的版本进行下载,并解压缩。之后在命令行中输入mvn package -DskipTests来构建Spark。构建完成后即可在target文件夹下找到生成的Spark应用包。 第五步:验证安装 在安装完成后,可以使用IDE(如IntelliJ IDEA)或者命令行来验证是否安装成功。在IDE中,可以创建一个Scala项目并导入Spark的相关依赖后,编写Spark应用程序来进行测试。在命令行中,可以使用spark-shell命令进入交互模式来执行Spark相关命令,验证是否成功。 总结: 以上就是Spark本地开发环境搭建的步骤。虽然过程比较繁琐,但只需要按照以上步骤进行安装,就能轻松地搭建起一个Spark本地开发环境。在上述环境下,你可以进行Spark开发和调试,处理大规模数据集。最后需要提醒注意的是,为了保证Spark应用程序能够正常运行,需要根据实际需要选择适当的硬件和软件资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值