Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在maven组件中使用eclipse编译器_Java_Eclipse_Maven_Eclipse Jdt - Fatal编程技术网

Java 在maven组件中使用eclipse编译器

Java 在maven组件中使用eclipse编译器,java,eclipse,maven,eclipse-jdt,Java,Eclipse,Maven,Eclipse Jdt,我正在从事一个相当大的Maven项目,并使用Eclipse在Java中开发 为了节省编译时间,我希望Maven和Eclipse能够共享 同样的目标,我设法做到了。但是当我用 Maven,Eclipse缺少一些放入字节码的东西,所以 重新编译所有内容(根据我的理解)。我在这里谈论的是“自动构建”特性,所以不是Eclipse将构建委托给Maven 为了解决这个问题,我想我应该让Maven使用与Eclipse相同的编译器。 在网上搜索之后,我发现我可以将此添加到顶部的pom: <build>

我正在从事一个相当大的Maven项目,并使用Eclipse在Java中开发

为了节省编译时间,我希望Maven和Eclipse能够共享 同样的目标,我设法做到了。但是当我用 Maven,Eclipse缺少一些放入字节码的东西,所以 重新编译所有内容(根据我的理解)。我在这里谈论的是“自动构建”特性,所以不是Eclipse将构建委托给Maven

为了解决这个问题,我想我应该让Maven使用与Eclipse相同的编译器。 在网上搜索之后,我发现我可以将此添加到顶部的
pom

<build>
...
<plugins>
...
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-compiler-plugin</artifactId>
   <configuration>
           <compilerId>eclipse</compilerId>
           <source>1.5</source>
           <target>1.5</target>
           <optimize>true</optimize>
   </configuration>
   <dependencies>
           <dependency>
                   <groupId>org.codehaus.plexus</groupId>
                   <artifactId>plexus-compiler-eclipse</artifactId>
                   <version>1.8.1</version>
           </dependency>
   </dependencies>
</plugin>
</plugins>
</build>

...
...
org.apache.maven.plugins
maven编译器插件
日食
1.5
1.5
真的
org.codehaus.plexus
plexus编译器eclipse
1.8.1
这似乎是可行的,但构建失败的速度相当快,有很多问题 错误,而使用javac成功。 我不知道为什么,但似乎有一些冲突与此有关 失败的Java文件是生成的文件

所以我想我可以试着只在 我正在处理的组件(没有生成这种类型的 文件)。我在我的组件的
pom
中添加了上述代码段,但是 生成到达我的组件时,出现以下错误:

没有这样的编译器“eclipse”

我还尝试在 顶部pom中列出的依赖项,但存在相同错误


你知道我想做的是可能的吗?有任何关于我如何做到这一点的提示吗?

我猜您的问题来自eclipse项目和maven pom不同步。我建议您使用来保持maven和eclipse的同步。这将通过使用POM作为“主”配置来配置eclipse项目


我认为您不需要特别配置要使用的编译器,但是您应该像您已经在做的那样配置maven编译器插件。

我不是100%确定您在这里想要实现什么,但这听起来是个坏主意。首先,您应该将Eclipse配置为在您的系统上使用SDK,而Maven应该使用相同的东西。所以我不明白为什么你认为Eclipse会在字节码中添加一些Maven不会得到的东西——反正他们都使用同一个编译器

其次,我不会试图在maven构建中使用任何Eclipse组件。它们被设计为在EclipseIDE中工作,因此让它们在Eclipse IDE之外工作通常充满了问题。我已经看过了,但这是一个黑客,并没有产生很好的结果

第三,如果您在Maven构建中遇到性能问题(这种情况并不少见),您可以做一些事情。首先分解构建并计算出时间的去向。我的经验是,问题通常不是汇编。以下是我看到的降低构建速度的事情列表:

  • 质量差的测试。通常启动集成测试的速度很慢,而测试实际上是作为集成运行的单元测试

  • 科贝图拉。很棒的工具,但由于Maven的工作方式,Cobertura插件必须再次运行从资源到编译的所有阶段。有一次,我写了一个插件,让测试在cobertura阶段运行之前停止运行,从而使Maven的长构建过程减少了40%

  • 在建筑物上方。包括基本上不会改变的子模块。更好的选择是创建一个只在必要时包含这些子mobules的概要文件,或者创建一个完全独立的构建

  • 长集成测试。如果集成测试需要很长时间,请考虑将它们放入不同的配置文件和CI服务器上的另一个版本。这样,您的主构建可以更快地进行,使开发人员能够更快地重新开始工作,而集成测试可以更少地运行

  • 最后-承认Maven是一个性能猪,并采取更快的行动。Ant可能仍然是最快的,但安装起来很麻烦,因为您必须手动配置所有内容。我建议进行试验,因为它修复了Ant和Maven都存在的许多问题。虽然说实话,我个人并没有对它做过任何性能测试。但它确实给了你一个Maven没有的控制水平


确保使用最新版本的
maven编译器插件(现在是2.3.2,-它是“全名”或右上角的小版本信息)

除此之外,配置应该可以工作。您也可以尝试使用最新的1.8.4版本的
plexus编译器eclipse

除此之外,您还需要了解Maven有几种类型的依赖关系。在您的例子中,有两个是有趣的:构建时间和插件依赖关系


前者收集在中,而后者必须收集在中。将插件添加到构建时类路径不会产生您想要的效果。

这是一个与maven多模块项目相关的老问题:

我实际上已经在使用m2eclipse了。eclipse项目由eclipse从pom文件生成。也许我应该提一下:当我说“eclise重建一切”时,我指的是eclipse的“自动构建”功能。我需要它做热交换。谢谢你的建议,德里克。老实说,我不知道到底有什么区别,但为了确保eclipse和maven不会生成相同的类文件,我只是做了一个比较。还要注意的是,我没有在maven构建中直接使用eclipse组件,这是一个plexus工件,以这种方式使用。实际上,我对maven的性能非常满意,我的问题是,当我使用maven构建时,eclipse会重新构建工作区