0

我正在创建一个对任何拥有 java-ee 环境的人都有用的项目。我不想在我的项目中包含最基本的 java-ee 接口库,以允许我使用所有 EJB 注释进行编码,但我宁愿将其设为范围provided,以免将所有类导入我的项目中。

有没有一种方法可以让我建立这种依赖关系并要求任何用户拥有一个 java-ee 库,或者我是否必须制作一些类似 maven 配置文件的东西,当它检测到每种服务器类型时激活它,(即一个用于 jboss,一个用于 glassfish,websphere , ETC...)。

我的 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>project-that-wants-users-to-have-javaee-libraries</artifactId>
    <version>0.0.1-Pre-alpha</version>

    <dependencies>
        ....
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

编辑:只是为了澄清我在问什么,假设我有一个像这样的 Maven 项目:

<?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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>testEJBProject</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.jboss.spec</groupId>
            <artifactId>jboss-javaee-all-6.0</artifactId>
            <version>3.0.2.Final</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>project-that-wants-users-to-have-javaee-libraries</artifactId>
            <version>0.0.1-Pre-alpha</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.jboss.as.plugins</groupId>
                <artifactId>jboss-as-maven-plugin</artifactId>
                <version>7.4.Final</version>
            </plugin>
        </plugins>
    </build>
</project>

即使我专门使用 jboss-javaee-all-6.0 api 和插件,我的代码中的依赖关系是否会在运行时得到满足?

4

1 回答 1

0

我的理解是,指定 java api 并将它们限定为提供将导致依赖项期望使用它的任何东西都已经在类路径上具有这些 api 的实现。provided您像这样指定依赖项:

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>tobeprovidedproject</artifactId>
        <version>1.0.0.Final</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
于 2013-11-18T10:17:13.003 回答