所以,我有很多基于java的项目。它使用了很多本地库。所有这些(项目/库)都在同一个存储库中。每个操作系统的corse都是不同的dll / jar 我们的想法是根据操作系统改变哪些进口。那么有可能不使用Maven,Gradle .. e.t.c?我认为它看起来像使用c ++预处理器..
UPT 对于错误信息感到抱歉,我们正在使用Ant ..所以很高兴知道有任何解决方案吗?
答案 0 :(得分:1)
构建工具的关键在于我们不必自己处理各种依赖关系。所以我仍然建议您查看Maven构建配置文件。
例如
<profiles>
<profile>
<activation>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
...
</profile>
</profiles>
另请查看以下http://maven.apache.org/guides/introduction/introduction-to-profiles.html
答案 1 :(得分:0)
理想的工作是使用Maven定义所有操作系统所需的所有依赖项。因此,您的项目将包含每个操作系统所需的所有库。 为了动态地在代码中使用lib,您可以使用以下指令以编程方式检测os:
System.getProperty("os.name")
您可以定义一个开关循环或“if系列”作为libs调用的示例 以下是您可以编辑的示例:
public class OSValidator {
private static String OS = System.getProperty("os.name").toLowerCase();
public static void main(String[] args) {
System.out.println(OS);
if (isWindows()) {
System.out.println("This is Windows");
} else if (isMac()) {
System.out.println("This is Mac");
} else if (isUnix()) {
System.out.println("This is Unix or Linux");
} else if (isSolaris()) {
System.out.println("This is Solaris");
} else {
System.out.println("Your OS is not support!!");
}
}
public static boolean isWindows() {
return (OS.indexOf("win") >= 0);
}
public static boolean isMac() {
return (OS.indexOf("mac") >= 0);
}
public static boolean isUnix() {
return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0 );
}
public static boolean isSolaris() {
return (OS.indexOf("sunos") >= 0);
}
}