使用maven编译时,是否需要在/src/main/java中包含.java文件?

使用maven编译时,是否需要在/src/main/java中包含.java文件?,java,maven-2,layout,Java,Maven 2,Layout,我试着把一个项目转换成一个专业的项目。。。它的.java文件位于/src/main/java以外的其他位置,当我运行maven安装时,除了那些.class文件以外的所有文件(.hbm、.xml)都出现在我的jar中 这是pom.xml中的构建部分: <build> <resources> <resource> <directory>${basedir}/src</directory>

我试着把一个项目转换成一个专业的项目。。。它的.java文件位于/src/main/java以外的其他位置,当我运行maven安装时,除了那些.class文件以外的所有文件(.hbm、.xml)都出现在我的jar中

这是pom.xml中的构建部分:

<build>
    <resources>
        <resource>
            <directory>${basedir}/src</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes> 
        </resource>
    </resources>

    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.5</source>
                <target>1.5</target>
                <fork>true</fork>
                <compilerVersion>1.5</compilerVersion>
                <compilerArguments>
                    <encoding>UTF-8</encoding>
                </compilerArguments>
            </configuration>
        </plugin>
    </plugins>  
</build>

${basedir}/src
**/*.爪哇
maven编译器插件
1.5
1.5
真的
1.5
UTF-8
使用上述代码,我的jar中缺少.class文件。。。并且控制台上不会显示错误消息,是否需要将它们移动到/src/main/java包结构

还有,这种行为的原因是什么,缺少依赖项

我做了一个更改,将它们移动到src/main/java,在控制台上出现了一些异常,但我仍然不清楚是否“必须”将它们添加到这个“src/main/java”结构中

请给我一个关于这个的想法


谢谢

到目前为止,最简单的解决方案(如果在您的环境中可能的话)是将代码移动到/src/main/java,因为这正是maven所期望的。这是不可能的,您至少需要告诉maven在哪里可以找到源代码。从您的POM中,我看不到您在哪里做过这件事。

如果您想使用Maven,阻力最小的途径就是遵守Maven惯例。当然你可以有一个不同的源路径,但它肯定更复杂(似乎唯一的方法就是这样),你得到了什么?我相信移动源目录要容易得多。

看一下。这就是你获得“大会”的地方。如果您有不同的Internet项目布局,您可能必须更改项目POM中的某些设置,但这不是前面提到的好建议。

您可以将源目录配置为与以下资源相同:

<build>
    <sourceDirectory>${basedir}/src</sourceDirectory>
    <resources>
        <resource>
            <directory>${basedir}/src</directory>
            <excludes>
                <exclude>**/*.java</exclude>
            </excludes>
        </resource>
    </resources>
</build>

${basedir}/src
${basedir}/src
**/*.爪哇

这不是严格必要的-它是可配置的-但Maven附带了一个,强烈建议像其他Maven约定一样接受它(不要反对Maven,采用它)

我知道您正在从Ant迁移到Maven,但您并没有走上正确的道路,让Maven适应您现有的项目结构/工作流程只是而不是推荐的方法:

  • Maven强烈建议使用其约定(过度配置)来简化工作。不这样做会使事情更加复杂,并产生无用的配置开销
  • 当偏离默认值时,你就有点自作主张了
  • 不使用默认值可能会导致不好的意外情况,一些(实现差的)插件可能使用硬编码路径(如
    src/main/java
    target/classes
    ,等等),并且不喜欢更改默认值
  • 等等等等等等
  • 建议的方法是将现有结构转换为与maven兼容的模块化结构,并采用

    从长远来看,采用Maven标准和约定只会让你的Maven生活更轻松,你会得到一个标准化的结构,Maven就是这么做的

    我认为有足够多的人写了类似的建议,所以我不会再坚持了。但是你应该听取这些建议(不要坚持让Maven适合你现有的结构),尤其是因为你是Maven的新手。在我看来,您不是在从Ant迁移到Maven,而是在尝试将Maven迁移到Ant构建

    另见

    非常感谢您的发帖,我不知道如何在pom.xml文件中将默认的源代码构建从src/main/java更改为/src现在是如何完成的。。。我只在“${basedir}/src”中做了更改,我认为这还不够:(…非常感谢您的发布,我不知道在pom.xml文件中的什么地方可以更改默认值,源代码构建从src/main/java到/src现在是如何完成的…我只在“${basedir}/src”中做了更改,我认为这还不够:(@user,请查看我提供的链接,在这里您可以看到如何将参数直接传递给编译器的示例。虽然我没有尝试过这种方法(我更愿意花时间编写代码:-)…但是如果您真的想按照自己的方式来做,您可以尝试一下。谢谢您的发布,我会看看…知道如何更改默认值“/src/main/java”改为“/src”,因为将结构重命名为/src/main/java将不是合适的解决方案……${project.basedir}/src是需要更改的地方。