从Gradle,Spring和DB2开始的挑战

时间:2014-09-30 21:08:33

标签: java eclipse spring gradle build.gradle

我对该项目的想法是使用Gradle编写一个简单的Spring纯Java应用程序,它将连接到DB2数据库并提取一些数据并在控制台上打印。

首先,我使用Eclipse Luna创建了一个Gradle项目。

我的挑战:

  1. 如何读取sdb / main / resources中的database.properties文件,该文件包含db.driver,db.url,db.username和db.password?

  2. 如何告诉Gradle为驱动程序选择db2cc4.jar?我无法使用Gradle依赖项来管理它,因为它是一个专有的jar。

  3. 这是我的build.gradle

    apply plugin: 'java'
    apply plugin: 'eclipse'
    
    repositories {
        mavenCentral()
     }
    
    jar {
        baseName = 'QueryExecutor'
        version =  '0.1.0'
     }
    
    dependencies {
        compile 'org.springframework:spring-context:4.1.0.RELEASE'
        compile 'org.springframework:spring-jdbc:4.1.0.RELEASE'
        runtime files('lib/db2cc4.jar') 
        testCompile 'junit:junit:4.+'
      }
    
    task wrapper(type: Wrapper) {
        gradleVersion = '2.1'
    }
    

    这是我的ApplicationConfig.java

    import javax.annotation.Resource;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.Import;
    import org.springframework.context.annotation.PropertySource;
    import org.springframework.core.env.Environment;
    
    import org.shrinathk.queryexecutor.persistence.QueryExecutorDAO;
    
    @Configuration
    @Import({DatabaseConfig.class})
    @PropertySource("classpath:application.properties")
    @PropertySource("classpath:database.properties")
    public class ApplicationConfig
    {
        @Resource
        private Environment env;
    
        @Bean
        public QueryExecutorDAO queryExecutor()
        {
        return new org.shrinathk.queryexecutor.persistence.QueryExecutorDAO();
        }
    }
    

    这是我的DatabaseConfig.java

    import javax.annotation.Resource;
    import javax.sql.DataSource;
    
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.core.env.Environment;
    import org.springframework.jdbc.datasource.DriverManagerDataSource;
    import org.springframework.transaction.annotation.EnableTransactionManagement;
    
    @Configuration
    @EnableTransactionManagement
    public class DatabaseConfig
    {
    
        private static final String PROPERTY_NAME_DATABASE_DRIVER   = "db.driver";
        private static final String PROPERTY_NAME_DATABASE_URL      = "db.url";
        private static final String PROPERTY_NAME_DATABASE_USERNAME = "db.username";
        private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";
    
        @Resource
        private Environment env;
    
        @Bean
        public DataSource dataSource()
        {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
    
        dataSource.setDriverClassName(env.getRequiredProperty(PROPERTY_NAME_DATABASE_DRIVER));
        dataSource.setUrl(env.getRequiredProperty(PROPERTY_NAME_DATABASE_URL));
        dataSource.setUsername(env.getRequiredProperty(PROPERTY_NAME_DATABASE_USERNAME));
        dataSource.setPassword(env.getRequiredProperty(PROPERTY_NAME_DATABASE_PASSWORD));
    
        return dataSource;
        }
    }
    

    database.properties文件

    db.driver=com.ibm.db2.jcc.DB2Driver
    db.url=jdbc:db2://localhost:50000/SAMPLE
    db.username=db2admin
    db.password=db2admin
    

    这是我的项目结构:

    Project Structure

    谢谢!

1 个答案:

答案 0 :(得分:3)

  1. 项目的结构(例如src/main/resources)与maven中的结构相同。当您准备要部署的工件时,它应自动移动到适当的位置。

  2. 在添加db2jcc.ar依赖项时,您需要的是flatDir或在dependencies部分下添加以下代码:

    compile fileTree(dir: 'lib', include: '*.jar')