You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ac...@apache.org on 2007/06/15 10:28:56 UTC
svn commit: r547575 - in
/activemq/trunk/activemq-tooling/maven-activemq-plugin: pom.xml
src/main/java/org/apache/activemq/maven/BrokerMojo.java
Author: aco
Date: Fri Jun 15 01:28:55 2007
New Revision: 547575
URL: http://svn.apache.org/viewvc?view=rev&rev=547575
Log:
Updated the maven-activemq-plugin
https://issues.apache.org/activemq/browse/AMQ-1223
https://issues.apache.org/activemq/browse/AMQ-1224
https://issues.apache.org/activemq/browse/AMQ-1222
Thanks for the patches and comments Tim!
Modified:
activemq/trunk/activemq-tooling/maven-activemq-plugin/pom.xml
activemq/trunk/activemq-tooling/maven-activemq-plugin/src/main/java/org/apache/activemq/maven/BrokerMojo.java
Modified: activemq/trunk/activemq-tooling/maven-activemq-plugin/pom.xml
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-tooling/maven-activemq-plugin/pom.xml?view=diff&rev=547575&r1=547574&r2=547575
==============================================================================
--- activemq/trunk/activemq-tooling/maven-activemq-plugin/pom.xml (original)
+++ activemq/trunk/activemq-tooling/maven-activemq-plugin/pom.xml Fri Jun 15 01:28:55 2007
@@ -17,12 +17,12 @@
<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>
+ <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.activemq.tooling</groupId>
- <artifactId>activemq-tooling</artifactId>
- <version>5.0-SNAPSHOT</version>
+ <parent>
+ <groupId>org.apache.activemq.tooling</groupId>
+ <artifactId>activemq-tooling</artifactId>
+ <version>5.0-SNAPSHOT</version>
</parent>
<artifactId>maven-activemq-plugin</artifactId>
@@ -30,38 +30,27 @@
<name>ActiveMQ :: StartUp Plugin</name>
<dependencies>
- <dependency>
- <groupId>org.apache.maven</groupId>
- <artifactId>maven-plugin-api</artifactId>
- <version>2.0</version>
- </dependency>
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activemq-console</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.activemq</groupId>
- <artifactId>activeio-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derby</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derbynet</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jms_1.1_spec</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-j2ee-management_1.0_spec</artifactId>
- </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-plugin-api</artifactId>
+ <version>2.0.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.xbean</groupId>
+ <artifactId>xbean-spring</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derby</artifactId>
+ </dependency>
</dependencies>
</project>
Modified: activemq/trunk/activemq-tooling/maven-activemq-plugin/src/main/java/org/apache/activemq/maven/BrokerMojo.java
URL: http://svn.apache.org/viewvc/activemq/trunk/activemq-tooling/maven-activemq-plugin/src/main/java/org/apache/activemq/maven/BrokerMojo.java?view=diff&rev=547575&r1=547574&r2=547575
==============================================================================
--- activemq/trunk/activemq-tooling/maven-activemq-plugin/src/main/java/org/apache/activemq/maven/BrokerMojo.java (original)
+++ activemq/trunk/activemq-tooling/maven-activemq-plugin/src/main/java/org/apache/activemq/maven/BrokerMojo.java Fri Jun 15 01:28:55 2007
@@ -17,101 +17,122 @@
* limitations under the License.
*/
-import org.apache.activemq.console.Main;
+import org.apache.activemq.broker.BrokerFactory;
+import org.apache.activemq.broker.BrokerService;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.nio.MappedByteBuffer;
-import java.nio.channels.FileChannel;
+import java.util.Properties;
/**
- * Goal which starts activemq broker.
+ * Goal which starts an activemq broker.
*
* @goal run
* @phase process-sources
*/
-public class BrokerMojo
- extends AbstractMojo {
+public class BrokerMojo extends AbstractMojo {
/**
- * Location of the output directory. Defaults to target.
+ * The maven project.
+ *
+ * @parameter expression="${project}"
+ * @required
+ * @readonly
+ */
+ protected MavenProject project;
+
+ /**
+ * The broker configuration uri
+ *
+ * The list of currently supported URI syntaxes is described
+ * <a href="http://activemq.apache.org/how-do-i-embed-a-broker-inside-a-connection.html">here</a>
*
- * @parameter expression="${project.build.directory}"
+ * @parameter expression="${configUri}" default-value="broker:(tcp://localhost:61616)?useJmx=false&persistent=false"
* @required
*/
- private File outputDirectory;
+ private String configUri;
/**
- * Location of activemq xml config file.
+ * Indicates whether to fork the broker, useful for integration tests.
*
- * @parameter expression="${configFile}"
+ * @parameter expression="${fork}" default-value="false"
*/
- private File configFile;
+ private boolean fork;
/**
- * Broker URL.
- *
- * @parameter expression="${url}" default-value="broker:(tcp://localhost:61616)?useJmx=false"
+ * System properties to add
+ * @parameter expression="${systemProperties}"
*/
- private String url;
-
- public void execute()
- throws MojoExecutionException {
+ private Properties systemProperties;
- File out = outputDirectory;
+ public void execute() throws MojoExecutionException {
+ try {
+ setSystemProperties();
+ getLog().info("Loading broker configUri: " + configUri);
- // Create output directory if it doesn't exist.
- if (!out.exists()) {
- out.mkdirs();
+ final BrokerService broker = BrokerFactory.createBroker(configUri);
+ if (fork) {
+ new Thread(new Runnable() {
+ public void run() {
+ try {
+ broker.start();
+ waitForShutdown(broker);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }).start();
+ } else {
+ broker.start();
+ waitForShutdown(broker);
+ }
+ } catch (Exception e) {
+ throw new MojoExecutionException("Failed to start ActiveMQ Broker", e);
}
+ }
- String[] args = new String[2];
- if (configFile != null) {
- File config;
- try {
- config = copy(configFile);
- } catch (IOException e) {
- throw new MojoExecutionException(e.getMessage());
+ /**
+ * Wait for a shutdown invocation elsewhere
+ * @throws Exception
+ */
+ protected void waitForShutdown(BrokerService broker) throws Exception {
+ final boolean[] shutdown = new boolean[] {false};
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+ public void run() {
+ synchronized(shutdown) {
+ shutdown[0]=true;
+ shutdown.notify();
+ }
}
+ });
- args[0] = "start";
- args[1] = "xbean:" + (config.toURI()).toString();
- } else {
- args[0] = "start";
- args[1] = url;
+ // Wait for any shutdown event
+ synchronized(shutdown) {
+ while( !shutdown[0] ) {
+ try {
+ shutdown.wait();
+ } catch (InterruptedException e) {
+ }
+ }
}
- Main.main(args);
+ // Stop broker
+ broker.stop();
}
/**
- * Copy activemq configuration file to output directory.
- *
- * @param source
- * @return
- * @throws java.io.IOException
+ * Set system properties
*/
- public File copy(File source) throws IOException {
- FileChannel in = null, out = null;
- File dest = new File(outputDirectory.getAbsolutePath() + File.separator + source.getName());
-
- try {
- in = new FileInputStream(source).getChannel();
- out = new FileOutputStream(dest).getChannel();
-
- long size = in.size();
- MappedByteBuffer buf = in.map(FileChannel.MapMode.READ_ONLY, 0, size);
-
- out.write(buf);
-
- } finally {
- if (in != null) in.close();
- if (out != null) out.close();
- }
+ protected void setSystemProperties() {
+ // Set the default properties
+ System.setProperty("activemq.base", project.getBuild().getDirectory() + "/");
+ System.setProperty("activemq.home", project.getBuild().getDirectory() + "/");
+ System.setProperty("org.apache.activemq.UseDedicatedTaskRunner", "true");
+ System.setProperty("org.apache.activemq.default.directory.prefix", project.getBuild().getDirectory() + "/");
+ System.setProperty("derby.system.home", project.getBuild().getDirectory() + "/");
+ System.setProperty("derby.storage.fileSyncTransactionLog", "true");
- return dest;
+ // Overwrite any custom properties
+ System.getProperties().putAll(systemProperties);
}
}