如何构建Java代码以供重用?

时间:2013-06-19 22:07:06

标签: java code-reuse

我正在寻找像C或C ++中的编译器指令或类似Java的东西。你为什么问?

我有一堆Java代码,它曾经用于一个项目。然后是第二个项目,代码基于第一个项目。所以第一个副本有很多变化。尽管包名和内容等相同,但内部类别不同。

现在有第三个项目,比如第一个和第二个项目混合在一起。

如何构建代码以使一个代码库/ git repo包含所有三个项目代码?我如何确定要运行的代码路径?在运行时是项目1还是项目2还是项目3?编译器指令用于C / C ++。爪哇?

2 个答案:

答案 0 :(得分:2)

Java中没有编译器指令(ifdef)。

摘要什么是常见的并创建一个单独的库(或多个库,如果需要),它提供了重用的基本功能。然后重构所有项目以使用(即扩展或组合)库中的类。这就是OO编程的全部内容。

答案 1 :(得分:0)

我正在使用ANT构建脚本来构建我的java项目。我有一个build.properties,包含变量可以具有的各种值。我的build.xml实现了各种特定的构建目标,如debug,release,test。使用不同的构建目标进行ant(ant debug,ant release),我可以使用相同的代码库来拥有各种版本的jar。适用于基于ant目标的构建时变量。

<强> build.properties

# Build Parameters
# Turn On of Off debugging
config.debug_true=true
config.debug_false=false

<强> Config.java 在项目的某个地方定义这个java类。我在项目目录下的/ config文件夹中。

package com.stackoverflow.ajitk;

public class Config {

   // Build for DEBUG or RELEASE
   public final static boolean DEBUG = @CONFIG.DEBUG@;
}

<强>的build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="ABC" default="release">
    <property file="build.properties" />

...

  <macrodef name="copy-release-parameters">
      <sequential>
    <property name="config-target-path" value="gen/com/stackoverflow/ajitk"/>
    <!-- Copy the configuration file, replacing tokens in the file. -->
    <copy file="config/Config.java" todir="${config-target-path}"
    overwrite="true" encoding="utf-8">
    <filterset>
        <filter token="CONFIG.DEBUG" value="${config.debug_false}"/>
        <--... add more variables as needed by your project ... -->
    </filterset>
    </copy>
      </sequential>
  </macrodef>

...

<-- the above macro should be used in your release/debug target -->

...

</project>