Java JPA datasorce忽略属性文件中的用户名

Java JPA datasorce忽略属性文件中的用户名,java,database,spring,maven,jpa,Java,Database,Spring,Maven,Jpa,我有一个测试类,用于检查与数据库的连接是否已建立。凭据保存在属性文件中。当我在eclipse中运行测试时,一切正常。但是当我运行maven构建时,测试失败,因为用于连接数据库的用户名不是我在属性文件中设置的用户名。它是windows用户名。这是我的代码: 属性文件: driverClassName=oracle.jdbc.driver.OracleDriver user=database_dev1 password=password_dev1 url=jdbc:oracle:thin:@MyAw

我有一个测试类,用于检查与数据库的连接是否已建立。凭据保存在属性文件中。当我在eclipse中运行测试时,一切正常。但是当我运行maven构建时,测试失败,因为用于连接数据库的用户名不是我在属性文件中设置的用户名。它是windows用户名。这是我的代码:

属性文件:

driverClassName=oracle.jdbc.driver.OracleDriver
user=database_dev1
password=password_dev1
url=jdbc:oracle:thin:@MyAwsomeDatabase:1521:DEV01
配置类:

@Configuration
@EnableTransactionManagement
@EnableJpaRepositories("de.xxx.bvd.mobisl.service")
@PropertySource("classpath:database.properties")
@ComponentScan("de.xxx.bvd.mobisl.service")
public class JPAConfig {

@Value("${driverClassName}")
protected String driverClassName;
@Value("${url}")
protected String url;
@Value("${user}")
protected String username;
@Value("${password}")
protected String password;

private static final Logger logger = Logger.getLogger(JPAConfig.class);

@SuppressWarnings("unchecked")
@Lazy
@Bean
public DataSource dataSource() {
    try {
        SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
        Class<? extends Driver> driver = (Class<? extends Driver>) Class.forName(driverClassName);
        dataSource.setDriverClass(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);

        logger.info("created DataSource with username " + username + " and password " + password);

        return dataSource;
    } catch (ClassNotFoundException e) {
        logger.error("cannot create datasource!!", e);
        return null;
    }
}
但从maven运行时,日志文件显示:

[[XXX-LOG]] 2018-09-04 08:27:23 INFO  JPAConfig:57 - created DataSource with username database_dev1
[[XXX-LOG]] 2018-09-04 08:27:27 INFO  JPAConfigTest:52 - got result from database
[[XXX-LOG]] 2018-09-04 08:27:53 INFO  JPAConfig:57 - created DataSource with username <<Windows-Username>>
[[XXX-LOG]]2018-09-04 08:27:53信息JPAConfig:57-使用用户名创建数据源

如何告诉maven使用属性文件中的用户名?

${user}被maven替换为环境变量user

如果运行
mvn帮助:系统

解决方案将属性重命名为更具体的属性,如

db.username

在更大的项目中,副作用用户是非常模糊的。如果您重命名它,它的使用位置会更清晰

不要使用属性名称,如
password
。使用
db.password
或更具体的名称。用户也一样,使用加密密码:我现在正在吃我的键盘!前缀解决了这个问题。非常感谢你。当然我会使用加密密码;)。我不确定,但我认为${user}被mavenI替换了,我也这么认为,是的。我在另一个项目中尝试了它,并将属性“databaseloginname”重命名为“user”,得到了相同的结果。Maven使用Windows用户名。所以,从中吸取的教训是:不要将属性称为“用户”:D