想实现一种功能,任何需要的时候就在服务器上运行。可用把程序打个jar包传到服务器上,通过命令行触发。(当然也可以有其他实现方式,比如写个.do的程序,通过在页面输入链接请求触发)
具体步骤如下:
一、New个Maven Project
在工程的pom文件中要包含<packaging>jar</packaging>、依赖的jar包、build部分如下
<build>
<finalName>third</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.5.1</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.taofen8.task.client.main.ClientMain</mainClass>
</manifest>
<manifestEntries>
<Class-Path>config/</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>config-task-client.properties</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/lib
</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<outputDirectory>${project.build.directory}/config</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>config-task-client.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<inherited>false</inherited>
<configuration>
<aggregate>true</aggregate>
<breakiterator>true</breakiterator>
<charset>UTF-8</charset>
<docencoding>UTF-8</docencoding>
<windowtitle>
TOP ${project.version} API Documentation
</windowtitle>
<doctitle>
TOP ${project.version} API Documentation
</doctitle>
<encoding>UTF-8</encoding>
<excludePackageNames>
</excludePackageNames>
<stylesheetfile>stylesheet.css</stylesheetfile>
<links>
<link>
http://java.sun.com/j2se/1.5.0/docs/api/
</link>
</links>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<includes>
<include>**/*Test.java</include>
</includes>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-dependency-plugin
</artifactId>
<versionRange>
[2.1,)
</versionRange>
<goals>
<goal>
copy-dependencies
</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-resources-plugin
</artifactId>
<versionRange>
[2.3,)
</versionRange>
<goals>
<goal>testResources</goal>
<goal>copy-resources</goal>
<goal>resources</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
二、代码
新建个包,写好要的新功能。下面这段实例代码包含一个参数,是为了运行的时候可以根据具体情况来运行,更灵活。
public class ClassDemo {
String month = System.getProperty("month");
public static void methodDemo(String month){
//功能
}
public static void main(String[] args){
methodDemo(1);
}
}
三、上传
(1)打包代码mvn package,在工程的target目录下有工程名.jar和lib。
(2)在服务器的某个目录下创建个新目录,在此目录下创建个lib目录,将工程名.jar和lib里依赖的jar包都rz上传到此lib目录下。同时在此目录下创建个run.sh,内容如下:
java 内存大小 -classpath jar包列表 -Dmonth=入参值 全类名
注意jar包之间用“:“分隔。
java -Xmx512m -Xms512m -classpath ./lib/aliyun-openservices-1.0.10.jar:./lib/commons-codec-1.4.jar:./lib/commons-logging-1.1.1.jar:./lib/httpclient-4.1.3.jar:./lib/httpcore-4.1.4.jar:./lib/jdom-1.1.jar:./lib/third.jar -Dmonth=7 com.nvshen.aliyun.ClassDemo
(3)运行sudo ./run.sh 或者后台运行把日志打出来sudo nohup ./run.sh > /home/www/logs/nvshen/job/imageSync.log &