我正在尝试评估jetty的快速开发或目前在tomcat上运行的项目。我的配置看起来像
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.3.v20140905</version>
<configuration>
<scanIntervalSeconds>3</scanIntervalSeconds>
<webApp>
<descriptor>${project.build.directory}/${project.build.finalName}/WEB-INF/web.xml</descriptor>
<resourceBases>
<directory>${basedir}/src/main/webapp</directory>
<directory>${basedir}/../SharedWeb/src/main/webapp</directory>
</resourceBases>
<allowDuplicateFragmentNames>true</allowDuplicateFragmentNames>
<contextPath>/test</contextPath>
</webApp>
</configuration>
</plugin>
我通过war覆盖机制依赖于SharedWeb战争进行主战。我为两个maven项目指定了resourceBases,因此可以自动扫描资源中的更改并立即重新加载,并且所有工作正常。此外,当我在主战中编译类时,jetty会自动重启,重新加载最新的更改。但是当我尝试更改SharedWeb项目中的任何类并编译它时,该类不会重新加载。我只是想知道是否有办法让embed jetty自动从SharedWeb重新加载类?我知道jetty-maven-plugin使用来自本地maven存储库的SharedWeb war,因此我需要先安装SharedWeb工件才能看到任何更改。所以我没有很高的期望,但也许我错过了一些东西。
答案 0 :(得分:1)
因为对于这个问题(又名<scanTarget>
)来说似乎不是一个很好的先验答案,我只会发布这个新的并将标题调整为让以后更容易找到。
您要查找的内容为<scanTarget>
,因为这样您就可以自定义更改内容的扫描位置,从而触发热重新展开。
jetty-maven-plugin故意不会为自定义<resourceBases>
设置此项,因为在很多合法用例中,这会导致攻击性/过于频繁/无限次重新部署。决定最好打破#34;约定优于配置&#34;对于<scanTarget>
条目,允许开发人员决定应该扫描哪些更改。
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.3.v20140905</version>
<configuration>
...
<scanIntervalSeconds>3</scanIntervalSeconds>
<scanTargets>
<scanTarget>${basedir}/../SharedWeb/src/main/webapp/</scanTarget>
<scanTarget>${basedir}/../SharedWeb/target/classes/</scanTarget>
</scanTargets>
</configuration>
</plugin>
答案 1 :(得分:1)
伊万,
插件正在使用依赖项中的类和资源 战争,而不是你添加的战争。该 只是告诉码头观看该位置并重新部署 它会改变 - 它不会把它放到类路径上。
你需要告诉码头使用你的类和资源 依赖战争的项目,而不是战争神器。
做类似的事情:
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.2.3.v20140905</version>
<configuration>
<webApp>
<!-- tell jetty to use the classes from the dependency
webapp project directly -->
<extraClassPath>${basedir}/../SharedWeb/target/classes</extraClassPath>
<!-- tell jetty to use both this project's static
resources, and those of the dependency webapp project -->
<resourceBases>
<directory>${basedir}/src/main/webapp</directory>
<directory>${basedir}/../SharedWeb/src/main/webapp</directory>
</resourceBases>
</webApp>
<scanIntervalSeconds>3</scanIntervalSeconds>
<!-- tell jetty to watch the dependency webapp project classes
dir for changes -->
<scanTargets>
<scanTarget>${basedir}/../SharedWeb/target/classes/</scanTarget>
</scanTargets>
</configuration>
</plugin>
扬