Maven Jrebel 多模塊熱部署方案

近期在構建maven多模塊項目時,發現web module依賴的其它模塊,每次都要clean install成一個jar包,而後運行web module才能加載。html

本生jrebel是配置在了web module主模塊上,只要修改的是web模塊裏面的java文件都會自動reloading加載。java

這個問題正在尋找解決辦法。時刻會更新到這裏,若是有誰有解決辦法能夠幫幫忙。web

更新,通過多重測試,在web模塊pom中增長紅色字體部分,就ok了。啓動的時候,會直接編譯依賴模塊的target/classes,就直接忽略了clean install產生的jar,apache

再有就是在修改依賴module項目java類的時候,jrebel會自動reloading classapi

2015-03-25 00:48:46 JRebel: Reloading class 'com.xx.api.data.user.service.UserProfileService'.微信

提示上面一句話就證實ok拉。下面是我web模塊的部分配置。請參考,也能夠聯繫個人微信:benyzhousapp

		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>2.3.2</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
				</configuration>
			</plugin>
			<!-- 配置 maven 的 jetty 插件 -->
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>7.2.2.v20101205</version>
				<configuration>
					<webAppConfig>
						<contextPath> /${project.artifactId}</contextPath>
						<!-- 指定 root context 在這裏指定爲${project.artifactId} 即 jetty, 那麼訪問時就用http://localized:8080/jetty 訪問, 若是指定梶爲test 就用http://localized:8080/test訪問,更多信息,請查看jetty 
							插件官方文檔 -->
						<span style="color:#ff0000;"><!-- 設置其餘項目extraClasspath,多個用";"隔開 -->
						<extraClasspath>
						../data-service/target/classes;
						</extraClasspath> </span>
					</webAppConfig>

					<scanTargets>
						<!-- <scanTarget>../data-service/target/classes</scanTarget> -->
					</scanTargets>

					<!-- 指定額外須要監控變化的文件或文件夾,主要用於熱部署中的識別文件更新 -->
					<scanTargetPatterns>
						<scanTargetPattern>
							<directory>src</directory>
							<includes>
								<include>**/*.java</include>
								<include>**/*.properties</include>
							</includes>
							<!-- <excludes> <exclude>**/*.xml</exclude> <exclude>**/myspecial.properties</exclude> </excludes> -->
						</scanTargetPattern>
					</scanTargetPatterns>
					<scanIntervalSeconds>0</scanIntervalSeconds><!-- 指定監控的掃描時間間隔,0爲關閉jetty自身的熱部署,主要是爲了使用jrebel -->
					<webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory><!-- 指定web頁面的文件夾 -->
				</configuration>
			</plugin>

			<!-- jerebel maven 插件,用於生成jrebel.xml -->
			<plugin>
				<groupId>org.zeroturnaround</groupId>
				<artifactId>jrebel-maven-plugin</artifactId>
				<version>1.1.5</version>
				<executions>
					<execution>
						<id>generate-rebel-xml</id>
						<phase>process-resources</phase>
						<goals>
							<goal>generate</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<rebelXmlDirectory>${basedir}/src/main/webapp/WEB-INF/classes</rebelXmlDirectory>
					<!-- 指定生成的jrebel.xml放在哪裏, 要求放在web應用的 classpath下 -->
				</configuration>
			</plugin>
		</plugins>
		<outputDirectory>${basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>
		<!-- 指定編譯後文件的存放路徑,由於jetty默認src/main/webapp爲 web應用的根目錄而 maven compile 目標後的默認classpath 在target文件夾下,就形成jrebel.xml沒法兼顧 jetty 
			默認的是webapp中的classes爲 web 應用的根目錄, 而maven 默認是target 目錄因此須要修改該maven的默認classes目錄。 -->
相關文章
相關標籤/搜索