我正在使用eclipse juno& maven 2.2.1。
有没有一种简单的方法可以将eclipse输出文件夹与maven分开? 所以我想在目标目录中建立eclipse,并在target-maven目录中进行maclipse。
我尝试使用
<directory>target-maven</directory>
在pom.xml中。
如果我在创建项目后这样做,它的工作正常 但是当从svn(没有.classpath .target ...只有src文件夹)恢复项目,然后是eclipse:eclipse时,一切都在target-maven中构建。
答案 0 :(得分:1)
您可以为此创建different profiles。为Eclipse创建一个配置文件mvn-eclipse
,为指定不同目标目录的命令行创建mvn-cmd
。您需要在Eclipse启动配置中激活配置文件(选择Run as -> Maven Build ...
,然后选择Profiles
字段),或者create two different settings.xml
。在一个你指定
<activeProfiles>
<activeProfile>mvn-eclipse</activeProfile>
</activeProfiles>
和另一个
<activeProfiles>
<activeProfile>mvn-cmd</activeProfile>
</activeProfiles>
您应该将包含mvn-cmd
的设置文件命名为活动配置文件settings.xml
,这样在命令行上使用maven时就不必进行任何更改。在Eclipse中,您可以通过Preferences -> Maven -> User settings
指定设置。
但是我不建议这样做,因为在两个输出文件夹不同步时可能会遇到麻烦。所以一定要有充分的理由。
答案 1 :(得分:0)
按照第一个答案的排序,这是这样做的正当理由:
我正在尝试一个基于Maven的大型项目(200多个子项目),其中涉及最新的Scala(2.13),Eclipse不支持该项目。 Scala-IDE is effectively dead at 2.12。没有它,在Eclipse中进行干净的构建将删除Maven编译的Scala类,并彻底破坏所有内容。我不确定是否需要提及m2e也不可用。
因此,一切都以几行perl结束,以修复我的工作区。相信我,我尝试了许多其他方法。此解决方案仍然需要我在另一个脚本步骤中将已编译的Scala类提供给Eclipse,但这在当时并不是真正的问题。
此解决方案不会通过调整.classpath
生成的mvn eclipse:eclipse
文件来更改Maven的目录,而是Eclipse的输出文件夹。根据您的喜好将调用中的目标文件夹更改为setAttribute(...)
,然后在项目根目录中运行脚本。
#!/usr/bin/perl
use strict;
use XML::XPath;
my $files = [];
find_files( '.', '^\.classpath$', $files );
for my $file ( @$files ) {
my $xp = XML::XPath->new( filename => $file );
$xp->find( '/classpath/classpathentry[@kind="output"]' )
->[0]
->setAttribute( 'path', 'target-eclipse' );
open my $ofh, '>', $file or die 'Cannot open for writing: '.$file;
print $ofh $xp->getNodeAsXML;
close $ofh;
}
sub find_files {
my ( $path, $mask, $hits ) = @_;
opendir my $dh, $path or die 'Cannot open path: '.$path;
for my $entry ( grep { ! /^\.{1,2}$/ } readdir $dh ) {
my $fullpath = $path.'/'.$entry;
if ( -d $fullpath ) {
find_files( $fullpath, $mask, $hits );
} elsif ( $entry=~/$mask/ ) {
push @$hits, $fullpath;
}
}
closedir $dh;
}