Java可以从命令行编译,但不能从Maven编译

Java可以从命令行编译,但不能从Maven编译,maven,java-ee-6,Maven,Java Ee 6,我已将系统设置为从命令行编译jee6代码(无IDE)。我最近尝试编译一些使用javax.enterprise.context.RequestedScope的代码。代码在命令提示符下编译得很好,但是当我尝试使用Maven构建应用程序时,我一直得到javax.enterprise.context包not found错误 有什么好处?我以为Maven使用的是我正在使用的javac。为什么javac找不到包,而Maven找不到?我需要为java包添加依赖项吗 或者……有没有办法告诉Maven在构建时使用

我已将系统设置为从命令行编译jee6代码(无IDE)。我最近尝试编译一些使用javax.enterprise.context.RequestedScope的代码。代码在命令提示符下编译得很好,但是当我尝试使用Maven构建应用程序时,我一直得到javax.enterprise.context包not found错误

有什么好处?我以为Maven使用的是我正在使用的javac。为什么javac找不到包,而Maven找不到?我需要为java包添加依赖项吗

或者……有没有办法告诉Maven在构建时使用当前类文件,或者Maven在构建时必须编译


谢谢。

尝试将Java EE 6 jar添加到Maven依赖项中:

<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">
    . . .
    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-endorsed-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

. . .
爪哇
JavaEEAPI
6
假如

这将把Java EE类添加到编译时类路径中。

要使用Maven编译代码,您需要告诉它在哪里可以找到所需的组件

看起来您需要将此项添加到依赖项中:

<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">
    . . .
    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
<dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-endorsed-api</artifactId>
    <version>6.0</version>
    <scope>provided</scope>
</dependency>

爪哇
javaee认可的api
6
假如
注意
元素。它告诉Maven不要将此依赖项与您的工件捆绑在一起,因为在运行时它将由应用程序容器提供

关于它从命令行编译的原因。 您可能在命令行
-cp
选项或全局
类路径
变量中有所需的jar文件

Maven在设计上并不关注全局
类路径