使用maven jetty:run时,是否可以禁用编译步骤?

使用maven jetty:run时,是否可以禁用编译步骤?,maven,maven-jetty-plugin,jrebel,Maven,Maven Jetty Plugin,Jrebel,我正在使用Eclipse和Maven,并使用Maven jetty插件运行我的应用程序 每次我执行jetty:run时,Maven都坚持重新编译我的文件,这让我有点恼火。它是次优的,因为文件已经由Eclipse编译(我正在编写Scala,它有一个(相对)较慢的编译器) 我正在使用配置文件,并在我的“开发”配置文件下运行mvn jetty:run 我想做的是: 配置jetty插件,使其在开发概要文件下运行时跳过编译阶段 我查阅了maven lifecycle文档,但没有找到任何关于“skip.co

我正在使用Eclipse和Maven,并使用Maven jetty插件运行我的应用程序

每次我执行jetty:run时,Maven都坚持重新编译我的文件,这让我有点恼火。它是次优的,因为文件已经由Eclipse编译(我正在编写Scala,它有一个(相对)较慢的编译器)

我正在使用配置文件,并在我的“开发”配置文件下运行mvn jetty:run

我想做的是:

配置jetty插件,使其在开发概要文件下运行时跳过编译阶段

我查阅了maven lifecycle文档,但没有找到任何关于“skip.compile”标志或配置参数的信息

我也尝试过这样配置Maven,但徒劳地假设它会在Maven jetty插件启动时停止重新编译

我错了,它不起作用。但我想的是,也许Scala编译器就是问题所在。也许它忽略了编译的内容

发展 maven编译器插件 默认测试编译 测试编译 默认编译 编译 1.6 1.6 假的 org.mortbay.jetty jetty maven插件 7.2.2.v20101205 真的 发展

更新:


我将尝试专门禁用scala编译

如果您说Eclipse已经编译了这些类,那么重新编译可能有两个原因:

  • 您正在调用
    clean
    或以某种方式删除已编译的类
  • Eclipse的输出文件夹与Maven的输出文件夹不同

因此,您需要防止删除已编译的类,或者将Eclipse和Maven配置为使用相同的输出文件夹。

解决方案是将环境变量设置为:

MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE"
以上这些对我很有用

在互联网的其他地方,它被描述为:

MAVEN_OPTS="-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y"

终于解决了。@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>

发展
org.scala-tools
maven scala插件
编译
编译
测试编译
测试编译
默认测试编译
测试编译
默认编译
编译
过程资源

经过一些研究,问题不在于jetty插件,而在于maven编译器插件。增量编译中有一个错误。请参阅此问题和答案:

以下配置对我来说很好;它允许在代码发生更改时以最小的重新编译速度非常快速地重新启动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>

maven编译器插件
3.1
1.6
1.6
UTF-8
${compile.debug}
假的
org.mortbay.jetty
maven jetty插件
6.1.26       
/                     
${basedir}/src/main/webapp
2.
src/main/java

据我所知,您可以将jetty插件配置为定期扫描,因此无需停止jetty…并在Eclipse中进行更改…更深入地了解maven jetty插件..khmarbaise,在使用jrebel编译时,我已经禁用了扫描功能。我也对这个插件进行了深入的研究,否则我就不在这里了。它需要的是禁用jetty的fork编译阶段:rungoalnope,这不是原因。原因是jetty:run目标在每次启动时都会派生一个编译。我已经解决了这个问题,现在将发布解决方案。虽然这看起来有效,但实际上并没有这样做。返回到绘图板。另一部分用于远程调试器连接