From: gumartinm
+ * With this class we can run processes using the intended daemon which is
+ * waiting for TCP connections in a specified port.
+ *
+ * Receiving the results in a XML format from the daemon where we can find three
+ * kinds of different fields: error, out and ret. Every field is related to the
+ * stderr, stdout and return code respectively.
+ *
+ *
+ * Example, stream received from daemon:
+ * {@code
+ *
+ *
+ * This class has to process the above stream and it offers two methods wich can be used + * to retrieve the stderr and stdout in a right way without having to know about the XML stream + * received from the daemon. The user does not have to know about how the daemon sends the data, + * he or she will work directly with the strings related to each stream. Those methods + * are {@link ForkDaemon#getStdout()} and {@link ForkDaemon#getStderr()} The return code from the command + * executed by the daemon can be retrieved as a return parameter from the method + * {@link ForkDaemon#exec(String, String, int)} + *
+ *+ * Instances of this class are mutable. To use them concurrently, clients must surround each + * method invocation (or invocation sequence) with external synchronization of the clients choosing. + *
+ */ +public class ForkDaemon { + private final ForkParser handler; + + + /** + * Simple constructor. + * Nothing special here. + * + */ + public ForkDaemon () { + handler = new ForkParser(); + } + + + /** + * This method sends commands to the daemon. + * The host name can either be a machine name, such as
+ * "java.sun.com
", or a textual representation of its
+ * IP address. If a literal IP address is supplied, only the
+ * validity of the address format is checked.
+ *
For host
specified in literal IPv6 address,
+ * either the form defined in RFC 2732 or the literal IPv6 address
+ * format defined in RFC 2373 is accepted. IPv6 scoped addresses are also
+ * supported. See here for a description of IPv6
+ * scoped addresses.
+ *
host
could be found, or if a scope_id was specified
+ * @throws SecurityException if a security manager exists
+ * and its checkConnect method doesn't allow the operation
+ * @throws IOException if an I/O error occurs when creating the socket.
+ * @throws SAXException
+ * @throws FactoryConfigurationError if the implementation is not available or cannot be instantiated.
+ * @throws SAXException If any SAX errors occur during processing.
+ * @throws ParserConfigurationException
+ */
+ public int exec(final String command, String host, int port)
+ throws UnknownHostException, IOException, SAXException, ParserConfigurationException {
+ final SAXParserFactory spf = SAXParserFactory.newInstance();
+ final SAXParser saxParser = spf.newSAXParser();
+ PrintWriter out = null;
+
+ final Socket socket = new Socket(InetAddress.getByName(host), port);
+ try {
+ out = new PrintWriter(socket.getOutputStream(), true);
+ out.println(command);
+ saxParser.parse(socket.getInputStream(), handler);
+ }
+ finally {
+ if (out != null) {
+ out.close();
+ }
+ socket.close();
+ }
+
+ //Just for testing the parser by using a file instead of a TCP connection.
+ //InputSource input = new InputSource(new FileReader("/tmp/xmlfromdaemon.xml"));
+ //saxParser.parse(input, handler);
+
+ return new Integer(handler.getReturnValue()).intValue();
+ }
+
+
+ /**
+ * Retrieve the standard output.
+ *
+ * @see {@link ForkDaemon#getStderr()}
+ * @return stdout
+ */
+ public String getStdout() {
+ return handler.getStdout();
+ }
+
+
+ /**
+ * + * Retrieve the standard error. + *
+ *+ *
+ * Example, stream received from daemon: + * {@code + *+ * + *+ * } + *
+ *
+ * From that example with this method we are going to obtain this return parameter: + * {@code + * ls: no se puede acceder a bbb: No existe el fichero o el directorio + * ls: no se puede acceder a aaa: No existe el fichero o el directorio + * ls: no se puede acceder a dddd: No existe el fichero o el directorio + * } + *+ * + * @return stderr + */ + public String getStderr() { + return handler.getStderr(); + } +} \ No newline at end of file diff --git a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkParser.java b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkParser.java new file mode 100644 index 0000000..c20ba15 --- /dev/null +++ b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/ForkParser.java @@ -0,0 +1,141 @@ +package de.fork.java; + +import org.apache.log4j.Logger; +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.SAXParseException; +import org.xml.sax.ext.DefaultHandler2; + +/** + *
+ * Class intended to parse the XML stream received from the daemon which is + * waiting to run commands. These commands are sent by the method + * {@link es.dia.pos.n2a.util.os.unix.ForkDaemon#exec(String, String, int)} + *
+ *+ * After processing one command the daemon sends a XML stream with the stderr, + * stdout and return status of that command. With this class we extract those values + * and we can retrieve them using the methods {@link #getStderr() }, {@link #getStdout()} + * and {@link #getReturnValue()} + *
+ *+ *
+ * Example, stream received from daemon: + * {@code + *+ * + */ +public class ForkParser extends DefaultHandler2{ + private static final Logger logger = Logger.getLogger(ForkParser.class); + private StringBuffer accumulator = new StringBuffer(); + private String stderr = new String(); + private String stdout = new String(); + private String returnCode = new String(); + + + @Override + public void endElement (String uri, String localName, String qName) { + if (qName.equals("error")) { + // After , we've got the stderror + stderr = stderr + accumulator.toString(); + } else if (qName.equals("out")) { + // After , we've got the stdout + stdout = stdout + accumulator.toString(); + } else if (qName.equals("ret")) { + returnCode = returnCode + accumulator.toString(); + } + } + + + @Override + public void endDocument () throws SAXException + { + if (stderr.length() != 0) { + String lastStderr = stderr.replaceFirst("\\\n$", ""); + stderr = lastStderr; + } + else { + stderr = null; + } + if (stdout.length() != 0) { + String lastStdout = stdout.replaceFirst("\\\n$", ""); + stdout = lastStdout; + } + else { + stdout = null; + } + } + + /** + * Retrieve the standard error. + * + *+ * } + *
+ * From the above example with this method we are going to obtain this return parameter: + * {@code + * ls: no se puede acceder a bbb: No existe el fichero o el directorio + * ls: no se puede acceder a aaa: No existe el fichero o el directorio + * ls: no se puede acceder a dddd: No existe el fichero o el directorio + * } + *+ * + * @return stderr + */ + public String getStderr() { + return stderr; + + } + + + /** + * Retrieve the standard output. + * + * @see {@link ForkParser#getStderr()} + * @return stdout + */ + public String getStdout() { + return stdout; + } + + + /** + * Retrieve the return code from the executed command. + * + * @return return status, usually
0 means the command went OK.
+ */
+ public String getReturnValue() {
+ return returnCode;
+ }
+
+
+ @Override
+ public void startElement (String uri, String localName, String qName, Attributes attributes) {
+ accumulator.setLength(0);
+ }
+
+
+ @Override
+ public void characters(char[] buffer, int start, int length) {
+ accumulator.append(buffer, start, length);
+ }
+
+ @Override
+ public void warning(SAXParseException exception) {
+ logger.error("WARNING line:" + exception.getLineNumber(), exception);
+ }
+
+ @Override
+ public void error(SAXParseException exception) {
+ logger.error("ERROR line:" + exception.getLineNumber(), exception);
+ }
+
+ @Override
+ public void fatalError(SAXParseException exception) throws SAXException {
+ logger.error("FATAL ERROR line:" + exception.getLineNumber(), exception);
+ throw (exception);
+ }
+}
\ No newline at end of file
diff --git a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/LauncherProcesses.java b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/LauncherProcesses.java
new file mode 100644
index 0000000..0f93fe2
--- /dev/null
+++ b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/LauncherProcesses.java
@@ -0,0 +1,275 @@
+package de.fork.java;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.net.UnknownHostException;
+import javax.xml.parsers.ParserConfigurationException;
+import org.apache.log4j.Logger;
+import org.xml.sax.SAXException;
+
+
+public class LauncherProcesses {
+
+ private static final Logger logger = Logger.getLogger(LauncherProcesses.class);
+
+ // Exit process status
+ private static final int STATUS_ERR = -1;
+
+ private static final int DEFAULT_PORT = 5193;
+ private static final String DEFAULT_HOST = "127.0.0.1";
+
+ /**
+ * Run a process.
+ *
+ * @param command system command to be executed.
+ *
+ * @return return code.
+ */
+ public static int exec(final String command) throws IOException, InterruptedException {
+
+ return exec(command, null, null);
+ }
+
+ /**
+ * Run a process.
+ *
+ * @param command system command to execute.
+ * @param standarOutPut if not null, the standard output is redirected to this parameter.
+ *
+ * @return return code.
+ */
+ public static int exec(final String command, final PrintStream standarOutPut) throws IOException, InterruptedException {
+
+ return exec(command, standarOutPut, null);
+ }
+
+
+ /**
+ * Run a process.
+ *
+ * @param command system command to be executed.
+ * @param standarOutPut if not null, the standard output is redirected to this parameter.
+ * @param errorOutPut if not null, the error output is redirected to this parameter.
+ *
+ * @return return code from the executed system command.
+ */
+ public static int exec(final String command, final PrintStream standarOutPut, final PrintStream errorOutPut) throws IOException, InterruptedException {
+
+ return exec(command, standarOutPut, errorOutPut, DEFAULT_HOST, DEFAULT_PORT);
+ }
+
+ /**
+ * Run a process.
+ *
+ * @param command system command to be executed.
+ * @param aLogger send the information to log.
+ */
+ public static int exec(final String command, final Logger aLogger) throws IOException, InterruptedException {
+
+ //calling private method to handle logger input/ouput in a common method
+ return execHandlingLogger(command, aLogger, DEFAULT_HOST, DEFAULT_PORT);
+ }
+
+
+ /**
+ * @param commandAndArguments String array containing system command and its
+ * arguments to be executed.
+ * For example:
+ *
+ * commandAndArguments[0]="ls";
+ * commandAndArguments[1]="-lr";
+ *
+ * @param aLogger
+ *
+ * @return return code from the executed system command.
+ *
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public static int exec(final String[] commandAndArguments, final Logger aLogger) throws IOException, InterruptedException {
+ String wholeCommand="";
+
+ for(String argument : commandAndArguments) {
+ wholeCommand = wholeCommand + " " + argument;
+ }
+
+ //calling private method to handle logger input/ouput in a common method
+ return execHandlingLogger(wholeCommand, aLogger, DEFAULT_HOST, DEFAULT_PORT);
+ }
+
+
+ /**
+ *
+ * @param command system command to be executed.
+ * @param standarOutPut the stdout stream from that command as a PrintStream
+ * @param errorOutPut the stderr stream from that command as a PrintStream
+ * @param host the specified host.
+ * @param port the TCP port where the daemon accepts connections.
+ *
+ * The host name can either be a machine name, such as
+ * "java.sun.com
", or a textual representation of its
+ * IP address. If a literal IP address is supplied, only the
+ * validity of the address format is checked.
+ *
+ * For host
specified in literal IPv6 address,
+ * either the form defined in RFC 2732 or the literal IPv6 address
+ * format defined in RFC 2373 is accepted. IPv6 scoped addresses are also
+ * supported. See here for a description of IPv6
+ * scoped addresses.
+ *
+ *
+ * @return the executed command's return code.
+ *
+ * @throws UnknownHostException
+ * @throws IOException
+ */
+ public static int exec(final String command, final PrintStream standarOutPut,
+ final PrintStream errorOutPut, final String host, int port) throws IOException {
+ int exitStatus = LauncherProcesses.STATUS_ERR;
+
+ ForkDaemon process = new ForkDaemon();
+ try {
+ exitStatus = process.exec(command, host, port);
+ } catch (SAXException e) {
+ // This is not a crazy thing, we are trying to insert this new method without
+ // breaking the old methods which did not throw SAXException or ParserConfigurationException
+ //[§EJ Item 61] Do not blame me.
+ throw new IOException(e);
+ } catch (ParserConfigurationException e) {
+ // This is not a crazy thing, we are trying to insert this new method without
+ // breaking the old methods which did not throw SAXException or ParserConfigurationException
+ //[§EJ Item 61] Do not blame me.
+ throw new IOException(e);
+ }
+
+ if (standarOutPut != null) {
+ if (process.getStdout() != null) {
+ standarOutPut.println(process.getStdout());
+ }
+ }
+
+ if (errorOutPut != null) {
+ if (process.getStderr() != null) {
+ errorOutPut.println(process.getStderr());
+ }
+ }
+
+ return exitStatus;
+ }
+
+
+ /**
+ *
+ * @param command system command to be executed.
+ * @param aLogger
+ * @param host the specified host.
+ * @param port the TCP port where the daemon accepts connections.
+ *
+ * @return the executed command's return code.
+ *
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ private static int execHandlingLogger(final String command, final Logger aLogger,
+ final String host, int port) throws IOException, InterruptedException {
+ int exitStatus = LauncherProcesses.STATUS_ERR;
+
+ ForkDaemon process = new ForkDaemon();
+ try {
+ exitStatus = process.exec(command, host, port);
+ } catch (SAXException e) {
+ // This is not a crazy thing, we are trying to insert this new method without
+ // breaking the old methods which did not throw SAXException or ParserConfigurationException
+ // Do not blame me.
+ throw new IOException(e);
+ } catch (ParserConfigurationException e) {
+ // This is not a crazy thing, we are trying to insert this new method without
+ // breaking the old methods which did not throw SAXException or ParserConfigurationException
+ // Do not blame me.
+ throw new IOException(e);
+ }
+
+ if (process.getStdout() != null) {
+ aLogger.info(process.getStdout());
+ }
+ if (process.getStderr() != null) {
+ aLogger.error(process.getStderr());
+ }
+
+ return exitStatus;
+ }
+
+
+ /**
+ * @param command command and its arguments to be executed.
+ * For example:
+ *
+ * commandAndArguments[0]="ls";
+ * commandAndArguments[1]="-lr";
+ *
+ * @param aLogger send information to log
+ *
+ * @return the executed command's return code.
+ *
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public static InputStream execStream (final String [] command, final Logger aLogger)
+ throws IOException, InterruptedException {
+ int exitStatus = LauncherProcesses.STATUS_ERR;
+
+ InputStream stdInput = null;
+
+ String wholeCommand="";
+ for(String argument : command) {
+ wholeCommand = wholeCommand + " " + argument;
+ }
+
+ ForkDaemon process = new ForkDaemon();
+ try {
+ exitStatus = process.exec(wholeCommand, DEFAULT_HOST, DEFAULT_PORT);
+ } catch (SAXException e) {
+ // This is not a crazy thing, we are trying to insert this new method without
+ // breaking the old methods which did not throw SAXException or ParserConfigurationException
+ throw new IOException(e);
+ } catch (ParserConfigurationException e) {
+ // This is not a crazy thing, we are trying to insert this new method without
+ // breaking the old methods which did not throw SAXException or ParserConfigurationException
+ throw new IOException(e);
+ }
+
+ if(exitStatus == 0) {
+ stdInput = new ByteArrayInputStream(process.getStdout().getBytes("UTF-8"));
+ }
+ else {
+ aLogger.error(process.getStderr());
+ }
+
+
+ return stdInput;
+ }
+
+ /**
+ * The command is lunched from location
+ *
#>cd location
+ * #location> command
+ *
+ * @param command the command to be executed by the daemon.
+ * @param location
+ *
+ * @return the executed command's return code.
+ * Usually 0
if execution is OK, otherwise !=0
+ *
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public static int execInLocation (final String command, final String location) throws IOException, InterruptedException {
+ int exitStatus = LauncherProcesses.STATUS_ERR;
+ final String wholeCommand = "cd " + location + " && " + command;
+
+ exitStatus = exec(wholeCommand, null, null, DEFAULT_HOST, DEFAULT_PORT);
+ return exitStatus;
+ }
+}
\ No newline at end of file
diff --git a/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/MainJavaFork.java b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/MainJavaFork.java
new file mode 100644
index 0000000..bed6b6a
--- /dev/null
+++ b/JavaFork/JavaExample/javafork-example/src/main/java/de/fork/java/MainJavaFork.java
@@ -0,0 +1,35 @@
+package de.fork.java;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.PrintStream;
+import javax.xml.parsers.ParserConfigurationException;
+import org.xml.sax.SAXException;
+
+
+public class MainJavaFork {
+
+ /**
+ * @param args
+ * @throws SAXException
+ * @throws ParserConfigurationException
+ * @throws FileNotFoundException
+ */
+ public static void main(String[] args)
+ throws ParserConfigurationException, SAXException, FileNotFoundException, IOException {
+
+ final ByteArrayOutputStream stdoutByteOut = new ByteArrayOutputStream();
+ final PrintStream stdout = new PrintStream(stdoutByteOut);
+ final String command = "ls -lah; ls -lah bbb aaa ccc; ls -lah";
+ final ByteArrayOutputStream stderrByteOut = new ByteArrayOutputStream();
+ final PrintStream stderr = new PrintStream(stderrByteOut);
+ int result;
+
+ result = LauncherProcesses.exec(command,stdout, stderr, "127.0.0.1", 5193);
+ System.out.println(result);
+ System.out.println("Stdout: " + stdoutByteOut.toString());
+ System.out.println("Stderr: " + stderrByteOut.toString());
+ }
+
+}
\ No newline at end of file
diff --git a/JavaFork/JavaExample/pom.xml b/JavaFork/JavaExample/pom.xml
new file mode 100644
index 0000000..aaf5867
--- /dev/null
+++ b/JavaFork/JavaExample/pom.xml
@@ -0,0 +1,663 @@
+
+
+
+ 4.0.0
+ de.fork.java
+ javafork
+ 2.0-SNAPSHOT
+ javafork
+ http://www.gumartinm.name
+ Java fork with Linux daemon
+
+ MyOrganization
+ http://www.gumartinm.name
+
+ pom
+
+ trac
+ http://gumartinm.name/trac
+
+
+ jenkins
+ http://gumartinm.name//jenkins/
+
+
+ scm:svn:http://gumartinm.name
+ http://gumartinm.name
+
+
+
+ com.sun.jdmk
+ jmxtools
+ 1.2.1
+
+
+ javax.activation
+ activation
+ 1.1
+
+
+ log4j
+ log4j
+ 1.2.15
+
+
+ com.sun.jdmk
+ jmxtools
+
+
+ com.sun.jmx
+ jmxri
+
+
+ javax.mail
+ mail
+
+
+ javax.jms
+ jms
+
+
+
+
+ junit
+ junit
+ 4.4
+ test
+
+
+
+
+
+ c3p0
+ c3p0
+ 0.9.1.2
+
+
+ cglib
+ cglib-nodep
+ 2.1_3
+
+
+ commons-collections
+ commons-collections
+ 3.2.1
+
+
+ commons-configuration
+ commons-configuration
+ 1.6
+
+
+ commons-dbcp
+ commons-dbcp
+ 1.2.2
+
+
+ commons-io
+ commons-io
+ 1.4
+
+
+ commons-lang
+ commons-lang
+ 2.4
+
+
+ commons-logging
+ commons-logging
+ 1.1.1
+
+
+ commons-net
+ commons-net
+ 2.0
+
+
+ commons-pool
+ commons-pool
+ 1.3
+
+
+ com.h2database
+ h2
+ 1.2.130
+
+
+ dom4j
+ dom4j
+ 1.6.1
+
+
+ xml-apis
+ xml-apis
+
+
+
+
+ hsqldb
+ hsqldb
+ 1.8.0.7
+
+
+ javatar
+ javatar
+ 2.5
+
+
+ jpos
+ jpos
+ 1.12.2
+ provided
+
+
+ jpos
+ jpos-controls
+ 1.12.2
+ provided
+
+
+ org.python
+ jython
+ 2.5.2b2
+
+
+ urbanophile
+ java-getopt
+ 1.0.13
+
+
+ mysql
+ mysql-connector-java
+ 5.1.6
+
+
+ org.apache.ibatis
+ ibatis-sqlmap
+ 2.3.4.726
+
+
+ org.apache.mina
+ mina-core
+ 2.0.0-M6
+
+
+ org.aspectj
+ aspectjrt
+ 1.6.5
+
+
+ org.aspectj
+ aspectjweaver
+ 1.6.5
+
+
+ org.dbunit
+ dbunit
+ 2.4.4
+ test
+
+
+ org.eclipse.jetty
+ jetty-continuation
+ 7.0.0.v20091005
+
+
+ org.eclipse.jetty
+ jetty-http
+ 7.0.0.v20091005
+
+
+ org.eclipse.jetty
+ jetty-io
+ 7.0.0.v20091005
+
+
+ org.eclipse.jetty
+ jetty-security
+ 7.0.0.v20091005
+
+
+ org.eclipse.jetty
+ jetty-server
+ 7.0.0.v20091005
+
+
+ org.eclipse.jetty
+ jetty-servlet
+ 7.0.0.v20091005
+
+
+ org.eclipse.jetty
+ jetty-webapp
+ 7.0.0.v20091005
+
+
+ org.eclipse.jetty
+ jetty-util
+ 7.0.0.v20091005
+
+
+ org.eclipse.jetty
+ jetty-xml
+ 7.0.0.v20091005
+
+
+ org.slf4j
+ slf4j-api
+ 1.5.2
+
+
+ org.slf4j
+ slf4j-log4j12
+ 1.5.2
+
+
+ log4j
+ log4j
+
+
+
+
+ org.springframework
+ spring-aop
+ ${spring.version}
+
+
+ org.springframework
+ spring-beans
+ ${spring.version}
+
+
+ org.springframework
+ spring-core
+ ${spring.version}
+
+
+ org.springframework
+ spring-context
+ ${spring.version}
+
+
+ org.springframework
+ spring-jdbc
+ ${spring.version}
+
+
+ org.springframework
+ spring-tx
+ ${spring.version}
+
+
+ org.springframework
+ spring-web
+ ${spring.version}
+
+
+ org.springframework
+ spring-webmvc
+ ${spring.version}
+
+
+ org.springframework
+ spring-context-support
+ ${spring.version}
+
+
+ org.springframework
+ spring-test
+ ${spring.version}
+ test
+
+
+ org.springframework.batch
+ spring-batch-test
+ 2.0.4.RELEASE
+
+
+ org.springframework.batch
+ spring-batch-core
+ 2.0.4.RELEASE
+
+
+ org.springframework.batch
+ spring-batch-infrastructure
+ 2.0.4.RELEASE
+
+
+ org.springframework
+ spring-orm
+ ${spring.version}
+
+
+ net.sf.ehcache
+ ehcache
+ 1.6.2
+
+
+ org.springmodules
+ spring-modules-cache
+ 0.9
+
+
+ p6spy
+ p6spy
+ 1.3
+
+
+ javax.transaction
+ jta
+ 1.0.1B
+
+
+ javax.servlet
+ servlet-api
+ 2.5
+
+
+ com.caucho
+ hessian
+ 3.1.6
+
+
+ org.codehaus.jettison
+ jettison
+ 1.0
+
+
+ com.thoughtworks.xstream
+ xstream
+ 1.3
+
+
+ org.ini4j
+ ini4j
+ 0.5.1
+
+
+ org.easymock
+ easymock
+ 2.4
+ test
+
+
+ org.easymock
+ easymockclassextension
+ 2.4
+ test
+
+
+
+ org.apache.commons
+ commons-compress
+ 1.0
+
+
+ org.apache.commons
+ commons-math
+ 2.0
+
+
+ dtgjpos_forms
+ dtgjpos_forms
+ 1.4.12
+ provided
+
+
+ org.codehaus.castor
+ castor-xml
+ 1.3.1
+
+
+ org.apache.xmlbeans
+ xmlbeans
+ 2.5.0
+
+
+ org.apache.velocity.tools
+ velocity-tools-generic
+ 1.4
+
+
+ org.apache.velocity
+ velocity
+ 1.6.2
+
+
+ org.tmatesoft.svnkit
+ svnkit
+ 1.3.1
+
+
+
+
+ javafork-example
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 2.0.2
+
+
+ 1.6
+ ${project.build.sourceEncoding}
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.6
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.4.2
+
+ true
+
+
+
+ org.codehaus.mojo
+ jdepend-maven-plugin
+ 2.0-beta-2
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 2.3.1
+
+
+
+ ${project.description}
+ ${project.version}
+ ${project.organization.name}
+ ${project.description}
+ ${project.version}
+ ${project.organization.name}
+ ${BUILD_TAG}
+ ${BUILD_ID}
+ ${BUILD_NUMBER}
+ ${prefix.committedRevision}
+ ${prefix.repository}
+ ${prefix.path}
+
+
+
+
+
+ com.google.code.maven-svn-revision-number-plugin
+ maven-svn-revision-number-plugin
+ 1.6
+
+
+
+ revision
+
+
+
+
+
+
+ prefix
+
+
+
+
+
+
+
+
+
+ releases
+ releases
+ http://noserver/artifactory/custom-annotations-libs-releases-local
+
+
+ snapshots-releases
+ snapshots-releases
+ http://noserver/artifactory/custom-annotations-libs-snapshots-local
+
+
+ noserver
+ file:///mnt/sdb1/data/downloads/jenkins/
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 2.1.2
+
+
+
+ index
+ dependencies
+ cim
+ issue-tracking
+ scm
+ summary
+ project-team
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.6.1
+
+
+ html
+
+ MYPROJECT API for ${project.name} ${project.version}
+ MYPROJECT API for ${project.name} ${project.version}
+
+
+ javadoc
+ aggregate
+
+
+
+
+
+ org.codehaus.mojo
+ taglist-maven-plugin
+ 2.3
+
+
+ TODO
+ @todo
+ FIXME
+ XXX
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-report-plugin
+ 2.4.3
+
+
+ integration-tests
+
+ report-only
+
+
+ failsafe-report
+
+ target/failsafe-reports
+
+
+
+
+ junit-tests
+
+ report-only
+
+
+ surefire-report
+
+ target/surefire-reports
+
+
+
+
+
+
+
+
+ UTF-8
+ 2.5.6
+
+
+
+
+
+
+
+