diff --git a/HibernatePlugin/pom.xml b/HibernatePlugin/pom.xml
index bf1c32b5e..e967fe071 100644
--- a/HibernatePlugin/pom.xml
+++ b/HibernatePlugin/pom.xml
@@ -7,7 +7,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
HibernatePlugin
diff --git a/HotswapAgent/pom.xml b/HotswapAgent/pom.xml
index 56e29d8c8..ac1cec1ac 100644
--- a/HotswapAgent/pom.xml
+++ b/HotswapAgent/pom.xml
@@ -7,7 +7,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
HotswapAgent
diff --git a/JettyPlugin/pom.xml b/JettyPlugin/pom.xml
index c7f5e1450..de0a2bf2d 100644
--- a/JettyPlugin/pom.xml
+++ b/JettyPlugin/pom.xml
@@ -7,7 +7,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
JettyPlugin
diff --git a/LogbackPlugin/pom.xml b/LogbackPlugin/pom.xml
index 83fde953e..ea478e46c 100644
--- a/LogbackPlugin/pom.xml
+++ b/LogbackPlugin/pom.xml
@@ -7,7 +7,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
LogbackPlugin
diff --git a/README.md b/README.md
index f8434bc7f..323f35e7a 100644
--- a/README.md
+++ b/README.md
@@ -2,23 +2,23 @@ Hotswap Agent
=============
Java unlimited runtime class and resource redefinition.
-The main purpose of this project is to avoid infamous change->*restart + wait*->check development lifecycle.
+The main purpose of this project is to avoid infamous change->restart + *wait*->check development lifecycle.
Save&Reload during development should be standard and many other languages (including C#) contain this feature.
This project is still in a beta version.
-## Easy to start
+### Easy to start
Download and install DCEVM Java patch + agent jar and launch your application server with options
`-XXaltjvm=dcevm -javaagent:HotswapAgent.jar` to get working setup. Optionally add hotswap-agent.properties
to your application to configure plugins and agent behaviour.
-## Plugins
+### Plugins
Each application framework (Spring, Hibernate, Logback, ...) needs special reloading mechanism to keep
up-to-date after class redefinition (e.g. Hibernate configuration reload after new entity class is introduced).
Hotswap agent works as a plugin system and ships preconfigured with all major framework plugins. It is easy
to write your custom plugin even as part of your application.
-## IDE support
+### IDE support
None needed :) Really, all changes are transparent and all you need to do is to download patch+agent and
setup your application / application server. Because we use standard java hotswap behaviour, your IDE will
work as expected. However, we work on IDE plugins to help with download & configuration.
@@ -26,7 +26,7 @@ work as expected. However, we work on IDE plugins to help with download & config
Quick start:
===========
-## Install
+### Install
1. download [latest release](//TODO) and unpack it's contents. You will need `jvm.dll` and `HotswapAgent.jar` files.
1. check that you have installed *JDK 1.7.0_45 Windows 64bit*, otherwise download and install [from here]
(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html)
@@ -35,7 +35,7 @@ and put `jvm.dll` into it. For example: `C:\Program Files\Java\jdk1.7.0_45\jre\b
other platform/version, currently you need to compile the file yourself from the [source](https://github.com/Guidewire/DCEVM).
1. unpack `HotswapAgent.jar` and put it anywhere on your disc. For example: `C:\java\HotswapAgent.jar`
-## Run your application
+### Run your application
1. use your favorite IDE of choice
1. add following command line java attributes:
-XXaltjvm=dcevm -javaagent:PATH_TO_AGENT\HotswapAgent.jar
You need to replace PATH_TO_AGENT with an actual
@@ -44,7 +44,7 @@ other platform/version, currently you need to compile the file yourself from the
1. start the application in debug mode.
1. save a resource and/or use the HotSwap feature of your IDE to reload changes
-## What is available?
+### What is available?
* Enhanced Java Hotswap - change method body, add/rename a method, field, ... The only unsupported operation
is hierarchy change (change the superclass or remove an interface).
* Reload resource - resources from webapp directory are usually reloaded by application server. But what about
@@ -71,23 +71,20 @@ Detail documentation of available properties and default values can be found in
How does it work?
=================
-DCEVM
------
+### DCEVM
Hotswap agent does the work of reloading resources and framework configuration (Spring, Hibernate, ...),
but it depends on standard Java hotswap mechanism to actually reload classes. Standard Java hotswap allows
only method body change , which makes it practically unusable. DCEVM is a JRE patch witch allows almost any
structural class change on hotswap (with an exception of a hierarchy change). Although hotswap agent works
even with standard java, we recommend to use DCEVM (and all tutorials use DCEVM as target JVM).
-Hotswap agent
--------------
+### Hotswap agent
Hotswap agent is a plugin container with plugin manager, plugin registry, and several agent services
(e.g. to watch for class/resource change). It helps with common tasks and classloading issues. It scans classpath
for class annotated with @Plugin annotation, injects agent services and registers reloading hooks. Runtime bytecode
modification is provided by javaasist library.
-Plugins
--------
+### Plugins
Plugins administered by Hotswap agent are usually targeted towards a specific framework. For example Spring plugin
uses agent services to:
* Modify root Spring classes to get Spring contexts and registered scan path
@@ -108,8 +105,7 @@ bean resolver cache.
Find a detail documentation of each plugin in the plugin project main README.md file.
-Runtime overhead
-----------------
+### Runtime overhead
It really depends on how many frameworks you use and which caches are disabled. Example measurements
for a large, real world enterprise application based on Spring + Hibernate, run on Jetty.
diff --git a/SpringPlugin/pom.xml b/SpringPlugin/pom.xml
index fb18954a4..cecbc5c94 100644
--- a/SpringPlugin/pom.xml
+++ b/SpringPlugin/pom.xml
@@ -7,7 +7,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
SpringPlugin
diff --git a/TomcatPlugin/pom.xml b/TomcatPlugin/pom.xml
index fc9fced7c..4b318dc40 100644
--- a/TomcatPlugin/pom.xml
+++ b/TomcatPlugin/pom.xml
@@ -7,7 +7,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
TomcatPlugin
diff --git a/ZkPlugin/pom.xml b/ZkPlugin/pom.xml
index b514d4c92..ccf5b7451 100644
--- a/ZkPlugin/pom.xml
+++ b/ZkPlugin/pom.xml
@@ -7,7 +7,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
ZkPlugin
diff --git a/distribution/pom.xml b/distribution/pom.xml
index ed65ea43e..97e0ce69e 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -7,7 +7,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
distribution
diff --git a/distribution/src/main/java/org/hotswap/agent/distribution/PluginDocs.java b/distribution/src/main/java/org/hotswap/agent/distribution/PluginDocs.java
index 3774d26b6..1d4bc52d5 100644
--- a/distribution/src/main/java/org/hotswap/agent/distribution/PluginDocs.java
+++ b/distribution/src/main/java/org/hotswap/agent/distribution/PluginDocs.java
@@ -3,6 +3,7 @@
import org.hotswap.agent.PluginManager;
import org.hotswap.agent.annotation.Plugin;
import org.hotswap.agent.distribution.markdown.MarkdownProcessor;
+import org.hotswap.agent.util.IOUtils;
import org.hotswap.agent.util.scanner.ClassPathAnnotationScanner;
import org.hotswap.agent.util.scanner.ClassPathScanner;
@@ -71,6 +72,12 @@ public void scan() throws Exception {
addHtmlFooter(html);
writeHtml(new URL(getBaseURL(getClass()) + "/target/html/plugins.html"), html.toString());
+
+
+ String mainReadme = markdownProcessor.markdownToHtml(IOUtils.streamToString(new URL(
+ getBaseURL(getClass()) + "/../README.md"
+ ).openStream()));
+ writeHtml(new URL(getBaseURL(getClass()) + "/target/html/README.html"), mainReadme);
}
diff --git a/pom.xml b/pom.xml
index b233c4b77..5205f2a6c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
org.hotswap.agent
HotswapAgentParent
- 0.1-beta01
+ 0.1-beta1
pom
Hotswap Agent Parent POM