import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
public class PropertyReader {
private static Properties pro = null;
public static final String CONFIG_FILE = "kk-config.properties";
public static final String SQL_FILE = "kk-config.sql";
public static final String DB_NAME = "mts_konakart";
public static final String TABLE_NAME = "configuration";
static {
pro = new Properties();
try {
pro.load(new FileInputStream(CONFIG_FILE));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void execute() {
try {
FileWriter fileWriter = new FileWriter(SQL_FILE);
BufferedWriter bw = new BufferedWriter(fileWriter);
bw.write("USE " + DB_NAME + ";");
bw.newLine();
Iterator it = pro.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
String sql = "UPDATE " + TABLE_NAME + " SET configurationvalue='" + value + "' WHERE configuration_key='" + key + "';";
System.out.println(sql);
bw.append(sql);
bw.newLine();
}
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
<?xml version="1.0"?>
<project name="kk-config" basedir="." default="update">
<property name="project.dir" value="." />
<property name="src.dir" value="src"/>
<property name="classes.dir" value="classes"/>
<property name="kk.sql" value="kk-config.sql" />
<target name="create-sql" description="Create the sql file" depends="jar">
<taskdef name="propertyreader" classname="PropertyReader" classpath="${ant.project.name}.jar"/>
<propertyreader/>
</target>
<target name="clean" description="Delete all generated files">
<delete dir="${classes.dir}" failonerror="false"/>
<delete file="${ant.project.name}.jar"/>
<delete file="${ant.project.name}.sql"/>
</target>
<target name="compile" description="Compiles the Task">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="on"/>
</target>
<target name="jar" description="JARs the Task" depends="compile">
<jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/>
</target>
<target name="update" depends="create-sql">
<sql driver="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost:3306/mydb"
userid="root"
password="abc123_"
src="${kk.sql}"
/>
</target>
</project>
分享到:
相关推荐
本篇文章将深入探讨如何使用Ant自动打包编译Android应用,并重点介绍`custom_rules.xml`和`ant.properties`这两个配置文件的作用。 `Ant.properties`是Ant构建过程中的一个关键配置文件,它用于存储项目特定的属性...
<taskdef resource="net/sf/antcontrib/antcontrib.properties"> <pathelement location="path/to/ant-contrib-1.0b2.jar"/> ``` 然后我们可以在构建脚本中使用`for`任务: ```xml **/*.java"/> ...
4. **修改build.xml**:在`build.xml`中添加一个循环任务,遍历`ant.properties`中的所有渠道标识,并对每个标识执行打包操作。这个任务会替换APK中的渠道标识字符串,如替换`res/values/strings.xml`中特定的值,...
在这个例子中,我们首先通过元素加载ant-contrib的任务定义,然后就可以在构建脚本中使用foreach任务来遍历列表并执行名为"do-something"的目标。 总的来说,Ant和Ant Contrib在Java项目的构建和管理中扮演着重要...
同时,可以为每个市场定义不同的属性文件,比如channel.properties,用于存储渠道相关的特定配置。 4. **定义打包任务**:使用`<apk>`任务来执行打包操作,指定输入的编译后的类文件、资源文件、AndroidManifest....
而"for"任务的出现,使得Ant可以遍历集合并执行指定的操作,极大地提高了代码的可读性和维护性。只需在Ant脚本中添加"for"任务,就可以实现类似于编程语言中的循环结构。 三、集成与使用 要使用"ant-contrib-1.0b3...
##### 2.2 属性(Properties) 属性是构建文件中的一种特殊变量,可以用来存储值并在整个构建过程中引用。属性的使用可以简化构建脚本的维护工作,并提供了一种动态配置构建过程的方式。 ##### 2.3 任务(Task) 任务...
在提供的文件列表中,`build.bat`可能是Windows下的构建脚本,`build.properties`通常用于存储构建相关的配置属性,`build.xml`是Ant的主要构建文件,而`有关ant-crontrib的问题.txt`可能包含了作者在使用Ant-...
例如,你可以创建一个包含所有渠道号的列表,然后遍历这个列表,每次替换渠道号并打包。 9. **资源文件管理** 压缩包中的"ant批量打包资源文件"可能包括以下内容: - `build.xml`: 自定义的ANT构建脚本 - `...
3. **定义多渠道任务**:创建一个Ant任务,如`build-all-channels`,它会遍历所有渠道并调用打包任务。可以通过`subant`任务来实现,这样可以对每个渠道执行相同的构建过程。 4. **打包过程**:在`<target>`标签内...
确保你的Android项目已经集成了Ant依赖,并且`build.properties`文件配置正确,包含Android SDK和NDK的路径。 接下来,我们需要创建一个渠道文件夹,用于存放每个渠道的配置信息。例如,可以创建一个名为`channels`...
5. **替换渠道标识的脚本**:Ant脚本中会有一个任务读取channels.txt,然后遍历文件中的每个渠道名,对APK进行签名并替换字符串资源。 6. **源代码和资源文件**:包括Android项目的Java源代码、资源文件(如布局、...
2. **遍历渠道**:使用Ant的`for`循环遍历每个渠道,并在每个迭代中修改APK的版本名称或代码,添加渠道标识符等。 3. **构建APK**:在每个渠道迭代中,执行构建任务,生成特定于该渠道的APK。 4. **签名和优化**:对...
4. **遍历渠道**:在Ant脚本中使用`for`循环遍历`local.properties`中的每个渠道,为每个渠道执行打包操作。在打包过程中,修改`AndroidManifest.xml`中与渠道相关的值,如广告ID、统计代码等。 5. **编译和打包**...
在这个例子中,`<foreach>`遍历指定目录下的所有.java文件,并对每个文件执行`-do-something`目标。 总结来说,"ant-contrib-0.2.jar.zip"是一个包含Apache Ant扩展库和许可信息的压缩包,它扩展了Ant的构建能力,...
然后,设置一个循环,遍历`build.properties`中的每个渠道,并在每次迭代中调用xmltask修改AndroidManifest.xml文件,替换特定的渠道标识符。 3. **修改AndroidManifest.xml**:在AndroidManifest.xml中,定义一个...
- 定义一个用于多渠道打包的目标,如`release-all`,在其中使用`foreach`任务遍历渠道列表: ```xml , channel2, channel3" target="package-for-channel" param="channel"/> ${channel}"/> <!-- 更改...
在运行Ant构建时,`package-apk`目标会遍历所有渠道,对每个渠道执行`package-channel`目标,从而生成对应的定制APK。在`replace`任务中,我们用每个渠道的ID替换`strings.xml`文件中的`@string/channel_id`值,确保...
使用Ant的`for`循环或者`subant`任务来遍历所有渠道,并为每个渠道执行打包操作。例如: ``` ${channels}" delimiter=',' param="channel"> <!-- 设置当前渠道属性 --> ${param}"/> <!-- 执行打包操作 --> ...
Ant作为一款强大的Java构建工具,被广泛应用于自动化这些任务。本篇文章将深入探讨Ant如何实现多渠道批量打包,以及相关知识点。 **Ant简介** Apache Ant是一个基于Java的构建工具,其设计灵感来源于Make,但使用...