在 maven 中没有 main.java 的包名称

2022-09-02 00:27:39

我用标准的 Maven 目录布局在 Eclipse 中开发我的项目。源代码位于 src/main/java/com/mycompany 目录中。并且需要将我的源类放在包 main.java.com.mycompany 中。当我构建可执行的jar文件时,我必须在Manifest.MF中定义主类,如下所示:

    Main-Class: main.java.com.mycompany.MyMainClass

但是我在很多例子中看到(比如在maven-assembly-plugin或maven-jar-plugin中配置mainClass属性),类名是在没有main.java部分的情况下指定的。我只想拥有

    Main-Class: com.mycompany.MyMainClass

我不知道如何做到这一点,因为我在Maven中完全是新手。


答案 1

Maven 的默认目录布局与 Eclipse 在创建新的 Java 项目时使用的布局不同。

这其实很简单。当您创建一个新的 Java 项目时,Eclipse 会在文件系统上创建一个名为 'src' 的文件夹,您应该在其中放置源代码。此外,Eclipse 将此文件夹配置为“源文件夹”。在此文件夹中创建的每个文件夹都将表示一个 Java 包。

Maven想要的有点不同。Maven 希望您有一个 “src/main/java” 文件夹,其中 “java” 子文件夹配置为源文件夹。因此,在此 java 文件夹下创建的所有文件夹都将表示 Java 包。

您可以从项目属性管理 Eclipse 中的源文件夹。右键单击您的项目,选择“生成路径 ->配置生成路径”。在弹出窗口中,打开“源”选项卡。现在,删除“src”作为源文件夹,并将其替换为“src/main/java”。

现在,Eclipse 会将您的软件包识别为 com.mycompany,而不是 main.java.com.mycompany。

我总是使用maven-eclipse插件从commmand行生成我的eclipse项目和classpath文件。我不是m2e的忠实粉丝。


答案 2

您也可以尝试更新 maven 项目。右键单击项目> Maven > Update Maven Project。


推荐