有没有办法在.classpath中使用mvn eclipse:eclipse添加自定义行?

时间:2011-02-10 15:54:48

标签: maven maven-eclipse-plugin

我正在使用mvn eclipse:eclipse命令生成我的.project.classpath

但是,由于某些原因,我想在.classpath文件中添加一行。我的pom.xml中是否有可用于实现此目的的配置?

请注意,<additionalConfig>无法使用,因为这会删除.classpath的内容。

我正在使用maven 3.0.2和maven-eclipse-plugin 2.8。

1 个答案:

答案 0 :(得分:4)

这取决于该行是什么。

  1. 如果是源文件夹,请使用 buildhelper-maven-pluginadd a source folder 生命周期阶段之前 generate-sources,这会 自动被捡起 eclipse插件。
  2. 如果它是类路径容器,那么 可以使用classpathContainers 参数
  3. 如果要更改输出文件夹(从target/classestarget/test-classes到其他内容),请在maven构建配置中更改它们:

    <build>
        <!-- replace "target" -->
        <directory>somedir</directory>
        <!-- replace "target/classes" -->
        <outputDirectory>anotherdir</outputDirectory>
        <!-- replace "target/test-classes" -->
        <testOutputDirectory>yetanotherdir</testOutputDirectory>
    </build>
    

    您可以单独配置这三个中的每一个,并且eclipse插件会选择更改,但将outputDirectorytestOutputDirectory置于directory内通常被认为是一种很好的做法(通常通过引用${project.build.directory}),否则您会破坏标准功能,例如mvn clean(它会清除${project.build.directory}):

    <build>
        <directory>bin</directory>
        <outputDirectory>${project.build.directory}/main-classes
        </outputDirectory>
        <!-- this config will replace "target" with "bin",
             compile src/main/java to "bin/main-classes"
             and compile src/test/java to "bin/test-classes"
             (because the default config for <testOutputDirectory> is
             ${project.build.directory}/test-classes )
        -->
    </build>
    
  4. <强>参考:


    更新:在您的情况下我想唯一可行的解​​决方案是以编程方式编辑.classpath文件。我可能会做的是这样的事情:

    1. 定义名为eclipse(或其他)的<profile>
    2. 定义gmaven plugin(使用this version
    3. 的执行
    4. 编写一个简短的groovy脚本(内联在pom或外部),检查.classpath文件中的类路径容器,如果缺少则添加它(将执行绑定到生命周期阶段,例如generate-resources
    5. profile activation设置为<file><exists>${project.basedir}/.classpath</exists></file>(因为您只希望它在eclipse项目中处于活动状态)
    6. 此解决方案的问题:eclipse:eclipse是一个目标,而不是一个阶段,因此无法自动执行此操作,因此您必须执行以下操作:

      mvn eclipse:eclipse    # two separate executions
      mvn generate-resources # here, profile will be active
      

      或者这也可能有效:

      mvn -Peclipse eclipse:eclipse generate-resources