2014-09-30 61 views
4

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

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

我的挑战:

  1. 如何解读其中有db.driver,db.url配置参数,db.username和db.password的src/main /资源database.properties文件?

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

这里是我的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

谢谢!

回答

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

  2. 当谈到加入db2jcc.ar依赖你所需要的是一个flatDir或下dependencies部分添加以下代码段:

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

+0

谢谢! 'compile fileTree(dir:'lib',include:'* .jar')'工作。 – Shrinath 2014-10-01 08:02:38

+1

还有一个问题 - 属性文件打包在最终的jar文件中。我如何让他们分开?属性文件的整体思想是确保不存在对jar的依赖,并且属性中的任何更改都不需要jar构建。每当jar执行时,它将从指定的位置(在我们的例子中,该jar在相同的目录中)拾取属性。 – Shrinath 2014-10-01 08:08:04

+0

不客气! – Opal 2014-10-01 08:08:06