【问题标题】:Eclipse maven build path issue in case of custom sourceDirectory自定义 sourceDirectory 的 Eclipse Maven 构建路径问题
【发布时间】:2018-12-16 17:09:16
【问题描述】:

我已将现有的 Java 项目转换为 Maven 项目,使用命令行时,Maven 可以完美地构建一切。

当我将同一个项目导入 Eclipse 并编译时(通过右键单击项目 -> 作为 Maven 构建运行,它仍然可以毫无问题地编译。

但是,我看不到源文件夹。当我检查构建路径时,它会发出警告 - 构建路径条目丢失。

我没有使用标准的src/main/java,因为我有一个无法更改的项目预先存在的文件夹结构。

这是我的 pom(注意 sourceDirectory 标签):

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycom</groupId>
  <artifactId>maven</artifactId>
  <version>17.4</version>
  <name>maven</name>
  <properties>
    <projecrt.rootDir>../../java</projecrt.rootDir>
  </properties>
  <build>
    <finalName>re</finalName>
    <sourceDirectory>${projecrt.rootDir}</sourceDirectory>
    <plugins>
      <plugin>    
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <configuration>
          <archive>               
            <manifestEntries>
              <Build-Version>${buildversion}</Build-Version>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>  
</project>

这是我的目录结构:

Src/java
----maven/pom.xml
----com/mycom/<...> // application code

【问题讨论】:

  • 你使用pom eclipse的方式无法确定源文件夹。您可以通过 UI 手动添加源文件夹(右键单击 -> 构建路径 -> 用作源文件夹)或利用 maven 构建助手插件以 eclipse 识别源文件夹的方式通过 maven 添加源文件夹正确。
  • 我强烈建议遵循约定...

标签: java eclipse maven maven-eclipse-plugin


【解决方案1】:

在 Eclipse 工作区中导入您的 Java 项目后,您可以specify the actual src folder:

单击打开 Java 透视图窗口 > 打开透视图 > 其他... > Java 以更改为 Java 透视图。

  • 在项目布局组中,将选择更改为创建单独的源和输出文件夹并编辑配置默认值...以将源文件夹名称从“src”修改为“sources”。

在您项目的设置中(project =&gt; property =&gt; java build path),您还可以更改/添加 src 文件夹:

【讨论】:

  • 它可以工作,但是每次更改 maven 项目并重新生成 eclipse 项目时,您都必须重复该配置。使用 build-helper-maven-plugin 更容易。
【解决方案2】:

你可以用这个build-helper-maven-plugin

并以这种方式在你的 pom 文件中配置它

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.0.0</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

现在当您执行mvn eclipse:eclipse 时,自定义源文件夹将被添加到.project 文件中的类路径条目中。 因此,您不需要进行任何手动配置,您的配置只会在运行时构建。 如果您将测试放在自定义源文件夹中,您也可以对测试源执行相同的操作。 希望这会有所帮助。

【讨论】:

  • 请不要再使用eclipse:eclipse。这将使 m2eclipse 无用,这是 Eclipse 最好的 Maven 集成解决方案。
  • 我正在使用相同的 maven 插件将生成的源目录添加到类路径中,我只需要在项目上执行 Context menu → Maven → Update project… 即可使其工作日食。
  • 这个解决方案是关于添加生成的源吗?我的问题是关于能够运行/调试/编辑通常存在于src/main/java 下的标准 maven 目录结构的源。但在我的情况下,目录结构不是标准的。上述解决方案是否有助于在我的源代码上运行/调试/设置断点,其方式与使用 maven 标准时相同(src/main/java)?
  • 是的,你试过了吗?您面临哪些挑战?
  • 我试过了,但我还没有看到源文件夹。清理工作区后我会再试一次。
猜你喜欢
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多