1

だから、私はJavaに基づいたプロジェクトをたくさん持っています。多くのネイティブ ライブラリを使用します。それら(プロジェクト/ライブラリ)はすべて同じリポジトリにあります。そしてもちろん、OSごとに異なるdll / jarがあります。アイデアは、OSに応じてインポートするものを変更することです。Maven、Gradleなどを使わなくても可能ですか?私はそれがC ++プリプロセッサを使用するように見えると思います..

UPT 誤った情報で申し訳ありません。私たちは Ant を使用しています。

4

2 に答える 2

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もご覧ください。

于 2013-10-07T07:20:55.363 に答える
0

理想的な仕事は、Maven を使用して、すべてのオペレーティング システムに必要なすべての依存関係を定義することです。したがって、プロジェクトには、各オペレーティング システムに必要なすべてのライブラリが含まれます。また、コードでライブラリを動的に使用するには、次の命令を使用してプログラムで OS を検出します。

  System.getProperty("os.name")

また、libs 呼び出しの例として、switch ループまたは「if シリーズ」を定義します。
編集できる例を次に示します。

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);
}

}

于 2013-10-07T07:26:27.360 に答える