在发布时

时间:2018-05-25 13:08:22

标签: java maven junit build bamboo

我有一个多模块Maven项目,如下所示:

reactor
 | core
 | console
 | custom-maven-plugin (depends on core)
 | test-deployment

我有一个基本名称为login的资源包,我从Git中排除它,因为它包含密码。在我的项目中,该文件位于core/src/test/resources,我有一个测试类,它使用它如下:

public abstract class TestBase {
    private static final ResourceBundle constants = ResourceBundle.getBundle("constants");
    private static final ResourceBundle bundle = ResourceBundle.getBundle("login");
    private Connection connection;

    // ...

    Connection getConnection() {
        // Connection will be created in another method, this one just returns it.
    }
}

public class ActualTest extends TestBase {
    // Uses the connection in tests here.
}

现在,如果我为整个项目执行mvn package,那么测试都会正确完成。

在我的构建服务器上,我有一个创建login.properties的脚本,因为它不包含在克隆的项目中:

printf "userName=$bamboo_login_userName\npassword=$bamboo_login_password" > core/src/test/resources/login.properties

构建服务器执行mvn clean release:prepare release:perform,但此时构建无法执行此异常:

java.util.MissingResourceException: Can't find bundle for base name login, locale en_US

我已经检查了目录core/src/test/resources core/target/test-classes,但文件已存在。出于某种原因,constants的资源包不会抛出异常,这告诉我,如何创建该登录文件存在问题。

这种行为有什么解释吗?

1 个答案:

答案 0 :(得分:0)

你不应该在main而不是test中生成login.properties吗?

printf "userName=$bamboo_login_userName\npassword=$bamboo_login_password" > core/src/main/resources/login.properties