Eclipse 日食及;maven输出目录

Eclipse 日食及;maven输出目录,eclipse,maven-2,Eclipse,Maven 2,我正在使用EclipseJuno和maven 2.2.1 有并没有一种简单的方法可以将eclipse输出文件夹和maven文件夹分开? 所以我希望eclipse构建在目标目录中,maven构建在目标maven目录中 我试着用 <directory>target-maven</directory> targetmaven 在pom.xml中 如果我在创建项目后这样做,效果会很好。 但是,当从svn(不带.classpath.target…仅src文件夹)恢复项目时,然

我正在使用EclipseJuno和maven 2.2.1

有并没有一种简单的方法可以将eclipse输出文件夹和maven文件夹分开? 所以我希望eclipse构建在目标目录中,maven构建在目标maven目录中

我试着用

 <directory>target-maven</directory>
targetmaven
在pom.xml中

如果我在创建项目后这样做,效果会很好。
但是,当从svn(不带.classpath.target…仅src文件夹)恢复项目时,然后是eclipse:eclipse,所有内容都在target maven中构建。

您可以为此创建。为eclipse创建配置文件
mvn eclipse
,并为命令行创建配置文件
mvn cmd
,在命令行中指定不同的目标目录。您需要在Eclipse启动配置中激活概要文件(选择
runas->Maven Build…
并在
profiles
字段中),或者您可以。在你指定的一个

  <activeProfiles>
    <activeProfile>mvn-eclipse</activeProfile>
  </activeProfiles>

mvn日食
另一方面

  <activeProfiles>
    <activeProfile>mvn-cmd</activeProfile>
  </activeProfiles>

mvn命令
您应该将包含
mvn cmd
的设置文件命名为活动配置文件
settings.xml
,以便在命令行上使用maven时不必进行任何更改。在Eclipse中,您可以通过
Preferences->Maven->User settings
指定设置

但是,我不建议您这样做,因为您可能会遇到两个输出文件夹都不同步的问题。因此,一定要有一个很好的理由。

您可以为此创建。为eclipse创建配置文件
mvn eclipse
,并为命令行创建配置文件
mvn cmd
,在命令行中指定不同的目标目录。您需要在Eclipse启动配置中激活概要文件(选择
runas->Maven Build…
并在
profiles
字段中),或者您可以。在你指定的一个

  <activeProfiles>
    <activeProfile>mvn-eclipse</activeProfile>
  </activeProfiles>

mvn日食
另一方面

  <activeProfiles>
    <activeProfile>mvn-cmd</activeProfile>
  </activeProfiles>

mvn命令
您应该将包含
mvn cmd
的设置文件命名为活动配置文件
settings.xml
,以便在命令行上使用maven时不必进行任何更改。在Eclipse中,您可以通过
Preferences->Maven->User settings
指定设置


但是,我不建议您这样做,因为您可能会遇到两个输出文件夹都不同步的问题。所以一定要有一个很好的理由。

作为对第一个答案的回应,这里有一个合理的理由为Maven和Eclipse提供单独的输出文件夹:

我正在尝试一个相当大的基于Maven的项目(200多个子项目),涉及最新的Scala(2.13),Eclipse不支持它。没有它,在Eclipse中进行干净的构建将删除Maven编译的Scala类,彻底破坏一切。我不确定是否需要提及m2e也无法使用

因此,最后用几行perl来修复我的工作区。相信我,我已经尝试了很多其他的方法。这个解决方案仍然需要我在另一个脚本化步骤中向Eclipse提供已编译的Scala类,但目前这并不是一个真正的问题

此解决方案不会通过调整
mvn Eclipse:Eclipse
生成的
classpath
文件来更改Maven,而是Eclipse的输出文件夹。将调用中的目标文件夹更改为
setAttribute(…)
,然后在项目根目录中运行脚本

#/usr/bin/perl
严格使用;
使用XML::XPath;
我的$files=[];
查找_文件(“.”、“^\.classpath$”、$文件);
对于我的$文件(@$文件){
我的$xp=XML::XPath->new(文件名=>$file);
$xp->find('/classpath/classpathentry[@kind=“output”]”)
->[0]
->setAttribute('path','targeteclipse');
打开我的$ofh,“>”,$file或die“无法打开以进行写入:”。$file;
打印$ofh$xp->getNodeAsXML;
关闭$ofh;
}
子查找文件{
我的($path,$mask,$hits)=@;
opendir my$dh、$path或die“无法打开路径:”。$path;
我的$entry(grep{!/^\.{1,2}$/}readdir$dh){
my$fullpath=$path.'/'.$entry;
如果(-d$fullpath){
查找文件($fullpath、$mask、$hits);
}elsif($entry=~/$mask/){
推送@$hits,$fullpath;
}
}
约$dh;
}
更新:如果您不介意重新生成Eclipse的所有文件(这将删除您可能拥有的任何其他自定义设置),您只需执行以下操作:

mvn eclipse:eclipse -DoutputDirectory=target-eclipse

作为对第一个答案的回应,这里有一个合理的理由为Maven和Eclipse提供单独的输出文件夹:

我正在尝试一个相当大的基于Maven的项目(200多个子项目),涉及最新的Scala(2.13),Eclipse不支持它。没有它,在Eclipse中进行干净的构建将删除Maven编译的Scala类,彻底破坏一切。我不确定是否需要提及m2e也无法使用

因此,最后用几行perl来修复我的工作区。相信我,我已经尝试了很多其他的方法。这个解决方案仍然需要我在另一个脚本化步骤中向Eclipse提供已编译的Scala类,但目前这并不是一个真正的问题

此解决方案不会通过调整
mvn Eclipse:Eclipse
生成的
classpath
文件来更改Maven,而是Eclipse的输出文件夹。将调用中的目标文件夹更改为
setAttribute(…)
,然后在项目根目录中运行脚本

#/usr/bin/perl
严格使用;
使用XML::XPath;
我的$files=[];
查找_文件(“.”、“^\.classpath$”、$文件);
对于我的$文件(@$文件){
我的$xp=XML::XPath->new(文件名=>$file);
$xp->find('/classpath/classpathentry[@kind=“output”]”)
->[0]
->setAttribute('path','targeteclipse');
打开我的$ofh,“>”,$file或die“无法打开以进行写入:”。$file;
打印$ofh$xp->getNodeAsXML;
关闭$ofh;
}
子查找文件{
我的($path,$m)