`

可运行war包,命令行启动war包

阅读更多

如果你用过hudson,肯定对它的启动方式印象深刻,它既可以用 java -jar *.war来启动,也可以放到web容器中启动。

这次在项目中也用到了这种方式,在这里总结一下,

内置了jetty作为启动容器,

启动类:

import java.io.File;
import java.net.URL;
import java.security.ProtectionDomain;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;

public class CompareLuncher {
	public static void main(String[] args) throws Exception {
		String currentPath=new File("").getAbsolutePath();
		//如果没有work目录,则创建,jetty默认解压路径
		File work=new File(currentPath+"\\work");
		if(!work.exists()){
			work.mkdir();
		}
		Server server =null;
		Integer port=8090;
		server=new Server(port);
		ProtectionDomain domain = CompareLuncher.class.getProtectionDomain();
		URL location = domain.getCodeSource().getLocation();
		WebAppContext webapp = new WebAppContext();
		webapp.setContextPath("/");
		webapp.setWar(location.toExternalForm());
		server.setHandler(webapp);
		server.start();
		server.join();
		
		//启动部署包的时候可以用这个
		// // Server server = new Server(8080);
		// // WebAppContext context = new WebAppContext();
		// // context.setContextPath("/compare");
		// // context.setWar("F:/compare.war");
		// // server.setHandler(context);
		// // server.start();
		// // server.join();

		//eclipse 测试的时候启用如下代码,debug模式下可以直接看到修改效果
//		 Server server = new Server(8090);
////		 
//		 ResourceHandler resourceHandler = new ResourceHandler();  
//	     resourceHandler.setDirectoriesListed(true);  
//	        
//		 server.setSendServerVersion(true);
//		 server.setStopAtShutdown(true);
//		 server.setHandler(getWebAppContext());
//		 server.start();
//		 server.join();

	}

	private static WebAppContext getWebAppContext() {

		String path = CompareLuncher.class.getResource("/").getFile()
				.replaceAll("/target/(.*)", "")
				+ "/src/main/webapp";
//		System.out.println(path);
		String path2 = new File("").getAbsolutePath() + "\\src\\main\\webapp";
		// System.out.println();

		return new WebAppContext(path2, "/");
	}
}

 

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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>ssss</groupId>
	<artifactId>pdfcompare</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>pdfcompare Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.8.1</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.pdfbox</groupId>
			<artifactId>pdfbox</artifactId>
			<version>1.8.2</version>
		</dependency>
		<!-- <dependency> <groupId>org.apache.axis2</groupId> <artifactId>axis2-kernel</artifactId> 
			<version>1.6.2</version> </dependency> -->

		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3</version>
		</dependency>
		<!-- Jetty -->

		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-server</artifactId>
			<version>${jettyVersion}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.eclipse.jetty</groupId>
			<artifactId>jetty-webapp</artifactId>
			<version>${jettyVersion}</version>
			<scope>provided</scope>
		</dependency>
		<!-- the dependency can be commented if no jsp -->
		<dependency>
			<groupId>org.eclipse.jetty.orbit</groupId>
			<artifactId>org.apache.jasper.glassfish</artifactId>
			<version>2.2.2.v201112011158</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>org.eclipse.jetty.orbit</groupId>
			<artifactId>javax.el</artifactId>
			<version>2.2.0.v201108011116</version>
			<scope>provided</scope>
		</dependency>
	</dependencies>
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-war-plugin</artifactId>
				<version>2.3</version>
				<configuration>
					<archive>
						<manifest>
							<mainClass>CompareLuncher</mainClass>
						</manifest>
					</archive>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.7</version>
				<executions>
					<execution>
						<id>main-class-placement</id>
						<phase>prepare-package</phase>
						<configuration>
							<target>
								<move todir="${project.build.directory}/${project.artifactId}/">
									<fileset dir="${project.build.directory}/classes/">
										<include name="CompareLuncher.class" />
									</fileset>
								</move>
							</target>
						</configuration>
						<goals>
							<goal>run</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.5.1</version>
				<executions>
					<execution>
						<id>jetty-classpath</id>
						<phase>prepare-package</phase>
						<goals>
							<goal>unpack-dependencies</goal>
						</goals>
						<configuration>
							<includeGroupIds>org.eclipse.jetty, org.eclipse.jetty.orbit</includeGroupIds>
							<includeScope>provided</includeScope>
							<!-- remove some files in order to decrease size -->
							<excludes>*, about_files/*, META-INF/*</excludes>
							<outputDirectory>
								${project.build.directory}/${project.artifactId}
							</outputDirectory>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
		<finalName>pdfcompare</finalName>
	</build>
	<properties>
		<!-- <jettyVersion>7.3.0.v20110203</jettyVersion> -->
		<jettyVersion>8.1.7.v20120910</jettyVersion>
	</properties>
</project>

 最后 在 workspace/项目名的根文件夹下执行:mvn clean install,再到target文件夹下找到 项目名称.war

用 java -jar  名字.war 即可启动

分享到:
评论
1 楼 dotku 2016-06-22  
运行 mvn clean install 出现报错信息

> An Ant BuildException has occured

完整报错信息

> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (main-class-placement) on project pdfcompare: An Ant BuildException has occured: C:\www\dotku.github.io\tech\java-maven\demo-war-running\target\classes does not exist.

看看...?

相关推荐

    spring-boot-中文参考手册 SpringBoot中文文档 springboot 中文 文档

    您可以使用 SpringBoot 创建 Java 应用程序,通过使用 Java -jar 或更传统的 war 包进行部署启动。我们还提供了一个运行 spring 脚本的命令行工具。 我们的主要目标是: 为所有 Spring 开发提供一个非常快速和广泛...

    easyjweb快速入门

    6、在命令行执行easyjweb war可以把应用发布成war包。把ejs.war文件拷到tomcat等服务器的webapp目录下也可运行。 7、如果没有装Web服务器,则可以在命令行执行easyjweb run可以自动启动内嵌的web服务器。在地址栏...

    2.0.2_Spring Boot 2 官方指导手册译文.docx

    Spring Boot 2 官方指导手册译文 ...您可以使用 Spring Boot 来创建 Java 应用程序,这些应用程序可以通过使用 java -jar或更传统的 war 部署来启动。我们还提供了一个运行“spring 脚本”的命令行工具。

    jocky 混肴编译rar包(ant和插件俩个版本)

    使用Jocky非常简单,获得jocky.jar以后,只需要运行java -jar jocky.jar就可以启动Jocky混淆编译器,jocky的命令行参数和javac完全相同,但增加了一个新的参数-scramble,它的用法如下: -scramble 混淆所有...

    Java项目开发与毕业设计指导

    安装JDK、配置环境变量,编译java源文件(可以用eclipse自动编译也可以手动命令行下编译),然后命令行下运行如下命令启动服务器端: java rmi.NetS 2000 (端口号为2000) 键入如下命令启动客户端: java...

    spring-boot-reference.pdf

    您可以使用Spring Boot创建可以使用java -jar或更传统的war部署启动的Java应用程序 。我们还提供了一个运行“spring脚本”的命令行工具。 我们的主要目标是: 为所有Spring开发提供从根本上更快且可广泛访问的入门...

    Teacher-Assistant-源码

    **如果您无法访问HiOA网络,请参阅下载保存到glassfish \ bin \ test1.war 启动glassfish:从命令行运行“ glassfish \ bin \ asadmin” ,然后运行“ asadmin&gt; start-domain domain1” 部署教师助手:运行

    springboot参考指南

    命令行启动器 vii. 22.7. Application退出 ii. 23.外化配置 i. 23.1. 配置随机值 ii. 23.2. 访问命令行属性 iii. 23.3. Application属性文件 iv. 23.4. 特定的Profile属性 v. 23.5. 属性占位符 vi. 23.6. 使用YAML...

    rr:RR-铁路图生成器

    RR-铁路图生成器 RR是语法图(也称为铁路图)的生成器。 它是一个自包含的工具,... .war文件是Java的“可执行战争”,即也可以从命令行独立启动。 在独立模式下可以执行两个不同的任务: 服务GUI,例如 java -jar

    spring-boot-中文参考指南

    Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只...你可以使用Spring Boot创建Java应用,并使用 java -jar 启动它或采用传统的war部署方式。我们也提供了一个运行"spring 脚本"的命令行工具。

    excelsior-jet-maven-plugin:Excelsior JET Maven插件为Maven用户提供了一种简便的方法,可使用Excelsior JET将其应用程序编译为优化的本机Windows,OS X或Linux可执行文件

    基本用法当前版本的插件支持四种类型的应用程序: 普通Java SE应用程序,定义为以下应用程序:(a)可以在常规java启动器的命令行上显式列出的所有依赖项下运行: java [-cp依赖性列表] main-class和(b)主要从以下...

    基于ssm+Vue的牛码小说网(源码+部署说明+系统介绍+数据库).zip

    启动项目:在命令行中进入项目根目录,执行以下命令启动项目: bash复制代码# 对于Tomcatcd novel-1.0.0 && mvn clean install && cd target && java -jar novel-1.0.0.war# 对于Jettycd novel-1.0.0 && mvn clean ...

    SpringBoot参考指南 中文版 有目录

    我们也提供了一个运行"spring脚本"的命令行工具。 我们主要的目标是: 为所有Spring开发提供一个从根本上更快,且随处可得的入门体验。 开箱即用,但通过不采用默认设置可以快速摆脱这种方式。 提供一系列大型项目...

    spring-boot-reference-guide-zh.pdf

    我们也提供了一个运行"spring脚本"的命令行工具。 我们主要的目标是: 为所有Spring开发提供一个从根本上更快,且随处可得的入门体验。 开箱即用,但通过不采用默认设置可以快速摆脱这种方式。 提供一系列大型项目...

    pericles-java-handlers:用于管理命令行进程的 Handler 服务的 Java 实现

    要创建 webapp 运行: $ mvn package这会将 Web 应用程序编译并打包为.war ,它可以部署到任何 Web 服务器,例如 Tomcat。 它还构建了一个 jar 来以独立模式启动应用程序: $ java -cp "target/JavaHandler/WEB-INF...

    wsdl2java源码-simple_service_repository:一种手动管理和社交服务合同内容的简单方法。帮助鼓励和支持使用RES

    服务器或通过在命令行中键入mvn clean install embedded-glassfish:run -Pembeddedgftest来使用 pom 中嵌入的 Glassfish 配置文件。 嵌入式 Glassfish 将尝试启动。 启动后,将 Web 浏览器指向 ...

    spring-boot-2.2.x:spring-boot-2.2.x原始码解读

    您可以使用Spring Boot创建独立的Java应用程序,该应用程序可以使用java -jar或更传统的WAR部署来启动。 我们还提供了一个运行Spring脚本的命令行工具。 我们的主要目标是: 为所有Spring开发提供根本上更快且可...

    spring-boot-base

    您可以使用Spring Boot创建独立的Java应用程序,该应用程序可以使用java -jar或更传统的WAR部署来启动。 我们还提供了一个运行Spring脚本的命令行工具。 我们的主要目标是: 为所有Spring开发提供根本上更快且可...

    demo

    您可以使用Spring Boot创建独立的Java应用程序,该应用程序可以使用java -jar或更传统的WAR部署来启动。 我们还提供了一个运行Spring脚本的命令行工具。 我们的主要目标是: 为所有Spring开发提供根本上更快且可...

    spring-boot-effective-sources:spring boot 2.2.6源码解析

    您可以使用Spring Boot创建独立的Java应用程序,该应用程序可以使用java -jar或更传统的WAR部署来启动。 我们还提供了一个运行Spring脚本的命令行工具。 我们的主要目标是: 为所有Spring开发提供根本上更快且可...

Global site tag (gtag.js) - Google Analytics