我正在使用Eclipse和Maven并使用Maven jetty插件运行我的应用程序。
我发现Maven每次执行jetty时都坚持要重新编译我的文件,这有点令人恼火:run。它是次优的,因为文件已经由Eclipse编译(我正在编写Scala,它有一个(相对)慢的编译器。)
我正在使用配置文件,并运行mvn jetty:在我的'development'配置文件下运行。
我想做的是:
配置jetty插件,以便在开发配置文件下运行时跳过编译阶段。
我查看了maven生命周期文档,但没有找到有关'skip.compile'标志或配置参数的任何信息。
我也尝试过像这样配置Maven徒劳地假设它会在maven-jetty-plugin启动时停止重新编译。
我错了,它没用。但我所想的是,也许Scala编译器就是问题所在。也许它忽略了编译的东西。
发展 Maven的编译器插件 默认testCompile 测试编译 默认编译 编 1.6 1.6 假 org.mortbay.jetty 码头 - Maven的插件 7.2.2.v20101205 真正 发展
更新
我将尝试专门禁用scala编译
答案 0 :(得分:9)
终于解决了.. @RobertMunteanu
哇!好吧,我终于弄清楚我做错了什么,解决方案是创建一个开发和生产配置文件,并且,对于开发配置文件,配置Scala插件执行什么都不做。
同样如此:
<profile>
<id>development</id>
<build>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<executions>
<execution>
<id>compile</id>
<goals></goals>
<phase>compile</phase>
</execution>
<execution>
<id>test-compile</id>
<goals></goals>
<phase>test-compile</phase>
</execution>
<execution>
<id>default-testCompile</id>
<phase>test-compile</phase>
<goals></goals>
</execution>
<execution>
<id>default-compile</id>
<phase>compile</phase>
<goals></goals>
</execution>
<execution>
<phase>process-resources</phase>
<goals>
</goals>
</execution>
</executions>
</plugin>
答案 1 :(得分:2)
解决方案是设置一个环境变量:
MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE"
以上对我有用。
在互联网的其他地方,它被描述为:
MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y"
答案 2 :(得分:0)
经过一番研究,问题不在于jetty插件,而在于maven-compiler-plugin。 incrementalCompilation中有一个错误。请参阅此stackoverflow问题和答案:Maven compiler plugin always detecting a set of sources as "stale"
以下配置适合我;它允许在代码更改时以最小的重新编译快速重启jetty,并且如果已经编译则不会重新编译:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<debug>${compile.debug}</debug>
<useIncrementalCompilation>false</useIncrementalCompilation>
</configuration>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<contextPath>/</contextPath>
<webAppSourceDirectory>${basedir}/src/main/webapp</webAppSourceDirectory>
<scanIntervalSeconds>2</scanIntervalSeconds>
<scanTargets>
<scanTarget>src/main/java</scanTarget>
</scanTargets>
</configuration>
</plugin>
答案 3 :(得分:-1)
如果您说这些类已经由Eclipse编译,则有两种可能的原因需要重新编译:
clean
或以某种方式删除已编译的类; 因此,您需要阻止删除已编译的类,或者将Eclipse和Maven配置为使用相同的输出文件夹。