java - 不同依赖关系中的 Maven 配置文件

标签 java maven profiles

我有一个带有两个不同数据库配置文件的 Maven 模块。

    <profile>
        <id>db-localhost-oracle</id>
        <dependencies>
            <dependency>
                <groupId>ojdbc6</groupId>
                <artifactId>ojdbc6</artifactId>
            </dependency>
        </dependencies>
        <properties>
            <db.driver>oracle.jdbc.driver.OracleDriver</db.driver>
            <db.dialect>no.jbv.sergej.util.FixedOracle10gDialect</db.dialect>
            <db.url>jdbc:oracle:thin:@//localhost:1521/xe</db.url>
            <db.hbm2ddl>update</db.hbm2ddl>
        </properties>
    </profile>

    <profile>
        <id>db-localhost-mysql</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
        </dependencies>
        <properties>
            <db.driver>com.mysql.jdbc.Driver</db.driver>
            <db.dialect>org.hibernate.dialect.MySQL5Dialect</db.dialect>
            <db.url>jdbc:mysql://localhost/${mysql.schema}</db.url>
            <db.hbm2ddl>update</db.hbm2ddl>
        </properties>
    </profile>

当使用“db-localhost-mysql”运行maven install时,它会在lib目录中包含“mysql-connector-java”jar文件。现在我使用“db-localhost-oracle”进行全新安装,它在 lib 目录中包含“mysql-connector-java”和“ojdbc6”jar。

如果我使用一个配置文件构建,maven 会自动删除其他配置文件的 jars,我怎样才能做到这一点?

最佳答案

您的问题与实际情况不符。您的个人资料定义对我来说听起来很正确:

mvn clean install 将启用 db-localhost-mysql (因为它被标记为默认激活),并且它将添加 mysql-connector-java。如果运行mvn clean install -Pdb-localhost-mysql

,也会发生同样的情况

mvn clean install -Pdb-localhost-oracle添加 ojdbc6 驱动程序。 mysql 配置文件将不会启用(因为仅当没有配置文件显式处于 Activity 状态时才会触发)。

这并不意味着您当前的依赖层次结构还没有这些 jar 之一。它可能作为传递依赖出现。要隔离这种情况并了解需要修复哪个项目,请运行 mvn dependency:tree -Pdb-localhost-oracle 在未启用 mysql 配置文件时查看依赖关系层次结构。

关于java - 不同依赖关系中的 Maven 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22166940/

相关文章:

android - 从几个 SharedPreferences 文件中获取 String 并创建 listView

asp.net - 将用户配置文件数据存储在用户表或单独的配置文件表中?

java - 不能使用 LocationCallback 类

Web 上的 Java 应用程序框架

java - 为什么我的 JScrollPane 与示例不同?

java - Jersey Web 应用程序动态注册资源

maven - linux shell/windows bat 脚本应该放在 Maven 源层次结构中的哪里?

java - 如何在不同的 Maven 配置文件上运行 jetty

mysql - 为用户帐户编写系统

java - 在 Spring JPA 中保存对象之前触发