Java 类通过 eclipse 中的外部 maven 编译,但不是(使用相同的 maven)从命令行编译

标签 java eclipse maven

好吧,自从我开始工作(大约 10 年前)以来,我就一直在使用 maven,但是这个真的让我感到困惑......

这是我的pom:

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>company.project</groupId>
    <artifactId>Artifact</artifactId>
    <packaging>war</packaging>
    <version>1.0.3-SNAPSHOT</version>
    <name>Name</name>

    <properties>
        <project.build.sourceEncoding>iso-8859-1</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>org.eclipse.birt.runtime</groupId>
            <artifactId>org.eclipse.birt.runtime</artifactId>
            <version>4.6.0-20160607</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>3.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.1.1.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

        <dependency>
            <groupId>commons-digester</groupId>
            <artifactId>commons-digester</artifactId>
            <version>1.6</version>
        </dependency>

        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>2.0.2</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

    <build>

        <finalName>${project.name}</finalName>

        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.6.1</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

到目前为止没有什么特别的(我想);然而,行为是完全不同的......

当我使用 M2E 通过 eclipse 运行它时:

  • 在目标文件夹内,类文件出现(在 target\classes 下)
  • 他们也在生成的 war 中

当我通过命令行运行它时:

  • 以上两者都不是...

这让我很困惑,因为通常情况恰恰相反,pom 中没有太多让我担心的异国情调,

显然没有多少人有这个问题......

任何人都可以告诉我从哪里开始寻找这个工作的指针吗?

这是命令行中的 maven 声明:

[INFO] --- maven-compiler-plugin:3.6.1:compile (default-compile) @ Reporting2 ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 37 source files to C:\Project\wss\maven\Sysper2\Reporting_maven\target\classes

但是在该目录中找不到一个文件...

感谢任何帮助:)

版本:

  • eclipse NEON 3
  • maven 3.3.9(都在eclipse外部独立使用)
  • jdk 1.7

一个(困惑的)S.

ps: 还有

mvn -X clean install

不给出任何明显的错误/警告...

编辑:一些附加信息:

  • 如果我使用 jdk8,它会在我的电脑上编译
  • 在我同事的电脑上它根本不工作(maven 3.3.3;jdk7 和/或 8)

最佳答案

<dependency>
     <groupId>org.eclipse.birt.runtime</groupId>
     <artifactId>org.eclipse.birt.runtime</artifactId>
     <version>4.6.0-20160607</version>
</dependency>

似乎是“导致”问题的原因......

降级到 4.4.2 使问题像阳光下的雪一样消失了......

显然,它让 maven 生成了两个命令行选项:

[DEBUG] -d /Users/kama/ws-git-maven-bugs/failingCompile/target/classes -classpath .....
[DEBUG] -d /Users/kama/ws-git-maven-bugs/failingCompile/target/classes -classpath .....

最后导致命令行javac报错:

javac: no source files
Usage: javac <options> <source files>
use -help for a list of possible options

this是maven编译插件jira中issue的链接

归功于 Robert Scholte用于查明害群之马...

归功于 Karl Heinz Marbaise找出到底出了什么问题......

关于Java 类通过 eclipse 中的外部 maven 编译,但不是(使用相同的 maven)从命令行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45506875/

相关文章:

java - Sonar Eclipse 插件使用错误的质量配置文件作为 Sonar 服务器

java - 如何使用命令行将 p2 更新站点的所有功能安装到 Eclipse?

javascript - 在 Eclipse 中查找/替换多行代码

java - Swagger 专家提供

java - 如何在不使用控件的情况下调整线路的音量

java - Java中如何使用引用?

java - 我们实际上在这里实例化了一个抽象类吗?

java - 前瞻性正则表达式产生意外组

java - Maven 加密属性

每个模块带有 svn 标签的 Maven 发布设置