[英]Deploying a simple Java Spark web app
我已经在Windows平台上使用Eclipse 使用Maven设置Spark中尝试了这个简单的“ Hello World” Web应用程序(使用maven 设置 )。 如果它是从Eclipse运行的,那么它可以完美地工作。
但是我要实现的是使其在云中使用的CentOS 6.x中运行,我可以使用腻子通过ssh访问它。 我已经在CentOS中安装了JDK 8和maven。 我没有安装任何应用程序服务器(没有Tomcat等),因为我希望Spark应用程序以其嵌入式AS(即Jetty)运行。
我还没有找到如何将这种Spark应用程序从Eclipse / Maven / Windows部署到云中的CentOS服务器的方法。 我找到了一些教程,这些教程解释了如何在heraku上进行部署,甚至如何在其他AS中进行部署(不使用嵌入式AS),但没有什么比我想要实现的要简单。
在Eclipse中,如果我将项目导出为jar,然后将jar上传到CentOS服务器,则无法使用“ java -jar appname.jar”运行它,似乎它没有Spark库,也没有嵌入式Jetty。
有什么帮助吗? 谢谢。
看完有关Maven的视频教程后,我找到了解决方案。 首先,您需要将以下内容添加到Eclipse中的maven项目中的xml.pom文件中:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<!-- This tells Maven to include all dependencies -->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>chatapp.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
告诉Maven在哪里可以找到主类很重要。 就我而言,我将我的应用程序命名为chatapp(因为我打算将这个简单的“ Hello World”应用程序发展为聊天应用程序),并且包含main方法的Main类也命名为Main,它位于chatapp包下,因此它是chatapp.Main。 您可以在<dependencies>
节点之后添加这些行。 因此,pom文件应如下所示:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.orboan</groupId>
<artifactId>chatapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>new-spark-project</name>
<dependencies>
<dependency>
<groupId>com.sparkjava</groupId>
<artifactId>spark-core</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<!-- This tells Maven to include all dependencies -->
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>chatapp.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
现在,重要的是不要像通常要将Java项目导出到jar文件中那样使用Eclipse中的export实用程序(右键单击包资源管理器中的项目,并且从上下文菜单中不要选择Export)。部署。 这将生成一个jar文件,但不需要所有依赖项。
而是必须从上下文菜单中选择“运行方式”>“ Maven安装”。 这将(从pom.xml生成)包含所有所需依赖项的相应jar文件,在我的示例中为chatapp-0.0.1-SNAPSHOT-jar-with-dependencies.jar
。
然后,将该jar文件上传到CentOS服务器,并使用java -jar
运行它
chatapp-0.0.1-SNAPSHOT-jar-with-dependencies.jarjava -jar
chatapp-0.0.1-SNAPSHOT-jar-with-dependencies.jarjava -jar
。 现在应该可以了。
chatapp-0.0.1-SNAPSHOT-jar-with-dependencies.jar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.