2

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

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

请注意,<additionalConfig>不能使用,因为这会删除.classpath.

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

4

1 回答 1

4

这取决于那条线是什么。

  1. 如果是源文件夹, 在生命周期阶段之前 使用buildhelper-maven-plugin添加 源文件夹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 插件获取,但将其放入内部outputDirectory(通常通过引用)被认为是一种好习惯,否则您会破坏标准功能,例如(它清除):testOutputDirectorydirectory${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>
    

参考:


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

  1. 定义一个<profile>命名的eclipse(或其他)
  2. 定义gmaven 插件的执行(使用这个版本
  3. 编写一个简短的 groovy 脚本(内联在 pom 中或外部),检查您的类路径容器的 .classpath 文件并在缺少时添加它(将执行绑定到生命周期阶段,例如generate-resources
  4. 配置文件激活设置为<file><exists>${project.basedir}/.classpath</exists></file>(因为您只希望它在 Eclipse 项目中处于活动状态)

这个解决方案的问题:eclipse:eclipse是一个目标,而不是一个阶段,所以不可能自动执行它,所以你必须做这样的事情:

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

或者这也可以工作:

mvn -Peclipse eclipse:eclipse generate-resources
于 2011-02-10T16:10:29.163 回答