可运行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:


	4.0.0
	ssss
	pdfcompare
	war
	0.0.1-SNAPSHOT
	pdfcompare Maven Webapp
	http://maven.apache.org
	
		
			junit
			junit
			4.8.1
			test
		
		
			org.apache.pdfbox
			pdfbox
			1.8.2
		
		

		
			commons-fileupload
			commons-fileupload
			1.3
		
		

		
			org.eclipse.jetty
			jetty-server
			${jettyVersion}
			provided
		
		
			org.eclipse.jetty
			jetty-webapp
			${jettyVersion}
			provided
		
		
		
			org.eclipse.jetty.orbit
			org.apache.jasper.glassfish
			2.2.2.v201112011158
			provided
		

		
			org.eclipse.jetty.orbit
			javax.el
			2.2.0.v201108011116
			provided
		
	
	
		
			
				org.apache.maven.plugins
				maven-war-plugin
				2.3
				
					
						
							CompareLuncher
						
					
				
			
			
				org.apache.maven.plugins
				maven-antrun-plugin
				1.7
				
					
						main-class-placement
						prepare-package
						
							
								
									
										
									
								
							
						
						
							run
						
					
				
			
			
				org.apache.maven.plugins
				maven-dependency-plugin
				2.5.1
				
					
						jetty-classpath
						prepare-package
						
							unpack-dependencies
						
						
							org.eclipse.jetty, org.eclipse.jetty.orbit
							provided
							
							*, about_files/*, META-INF/*
							
								${project.build.directory}/${project.artifactId}
							
						
					
				
			
		
		pdfcompare
	
	
		
		8.1.7.v20120910
	

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

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

你可能感兴趣的:(可运行war包,命令行启动war包)