2013-10-07 3 views
1

Итак, у меня есть много проектов на основе java. Он использует множество родных библиотек. Все они (проекты/библиотеки) находятся в одном хранилище. И из корней для каждой ОС разные dll/jars Идея состоит в том, чтобы изменить, какой из них будет импортироваться в соответствии с ОС. Так можно ли без использования Maven, Gradle .. e.t.c? Я думаю, что это будет выглядеть с использованием препроцессора C++.Java-зависимости в зависимости от операционной системы?

UPT Извините за дезинформацию, мы используем Ant .. Так было бы хорошо знать любое решение с ним?

+0

Это не ясно, что вы говорите здесь. Вы говорите о зависимостях времени компиляции/сборки или времени выполнения? И если вы не используете Maven, Gradle или Ant, какой инструмент сборки вы используете? –

+0

Я говорю о зависимостях построения. Я не настолько опытен в инструментах построения, и могу выглядеть глупо, но мы используем стандартные инструменты eclipse, которые я думаю. –

+1

Для простоты я отправил бы все DLL-файлы и выберет ту, которую вы хотите загрузить во время выполнения. Лично я бы избегал использования родных библиотек, если вам это действительно нужно. –

ответ

0

Идеальная работа заключается в том, чтобы использовать Maven для определения всех зависимостей, которые вам нужны для всех операционных систем. Таким образом, ваш проект будет содержать все необходимые библиотеки для каждой операционной системы. А для использования в коде LIBS динамически, вы обнаруживаете ОСА программно с помощью инструкции:

System.getProperty("os.name") 

И вы определяете цикл переключения или «если ряд», например, из ЛИЭСА вызова.
Вот пример, который можно редактировать:

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

}

+0

Я написал, но нам нужно «построить» решение. Ваша '' среда выполнения '', если я правильно понял .. –

+0

именно то, что я понял из вас, заключается в том, что ОС будет иметь значение в среде исполнения, а не в сборке. потому что, как правило, мы знаем, на каком os мы компилируем/строим, но ОС неизвестна для этапа выполнения. –

+0

Я думаю, что мы будем использовать решение для выполнения, но я попытаюсь убедить своего босса в использовании Maven (: Thank'sa lot! –

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

+0

Спасибо за помощь! Я думаю, что мы будем использовать Maven, если не найдем другого решения. –

+0

Можно ли создать что-то подобное с помощью Ant? –

+0

Извините, я не уверен насчет муравья. Я не много работал над этим. –

Смежные вопросы