WedX - журнал о программировании и компьютерных науках

Получить определенную банку из муравьиного плюща

Я использую муравей + плющ для проекта. Итак, давайте предположим, что мне нужно запустить <sql задачу для ant, поэтому мне нужно сначала получить драйвер jdbc. Кроме того, драйвер требуется во время компиляции проекта. Итак, я хочу иметь 2 конфигурации:

  • по умолчанию: для получения драйвера jdbc и других зависимостей проекта.
  • jdbc: получить ТОЛЬКО драйвер jdbc.

А затем просто запустите задачу получения с различными конфигурациями, например:

<!--Fetch all project dependencies, including jdbc driver-->
<ivy:retrieve pattern="${build.lib.home}/[artifact].[ext]" conf="default" />


<!-- Fetch only jdbc driver-->
<ivy:retrieve pattern="${build.lib.home}/[artifact].[ext]" conf="jdbc" />

ivy.xml

<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://ant.apache.org/ivy/schemas/ivy.xsd">
    <info organisation="" module="notebook-ivy"/>

    <configurations>
        <conf name="default" visibility="public" extend="jdbc"/>
        <conf name="jdbc" visibility="public"/>
    </configurations>

    <dependencies>
        <dependency org="mysql" name="mysql-connector-java" rev="5.1.6" conf="jdbc->default"/>
        <dependency org="org.apache.camel" name="camel-core" rev="2.15.1"/>

    </dependencies>
</ivy-module>

Я использую общедоступный mavencentral, поэтому не могу изменить конфигурацию зависимостей на сервере: ivysettings.xml

<ivysettings>
  <settings defaultResolver="chain"/>
  <resolvers>
    <chain name="chain">
      <ibiblio name="central" m2compatible="true" root="https://central.maven.org/maven2/"/>
    </chain>
  </resolvers>
</ivysettings>

Описанная выше конфигурация работает. Но это выглядит запутанно, когда default расширяет jdbc и jdbc расширяет default одновременно. Я новичок в ivy, поэтому мой вопрос: правильный ли это способ использования конфигураций для ivy.

13.04.2015

Ответы:


1

Операция «расширяет» позволяет вам выполнять операцию объединения наборов для банок в конфигурации плюща, так что это будет работать нормально.

Я предпочитаю моделировать конфигурации в соответствии с моими ожидаемыми требованиями к пути к классам:

<configurations>
    <conf name="compile" description="Dependencies required to build project"/>
    <conf name="compile" description="Dependencies required to run project" extends="compile"/>
    <conf name="test" description="Dependencies required to test project" extends="runtime"/>
    <conf name="build" description="ANT build tasks"/>
</configurations>

Затем можно использовать задачу ivy cachepath для создания этих путей в файле сборки:

  <target name="resolve">
    <ivy:resolve/>

    <ivy:cachepath pathid="build.path" conf="build"/>
    <ivy:cachepath pathid="compile.path" conf="compile"/>
    <ivy:cachepath pathid="test.path" conf="test"/>
  </target>

Этот подход означает, что что-то вроде jdbc jar будет сопоставлено с конфигурацией «компиляции», что сделает его доступным для задач javac:

  <target name="compile" depends="resolve">
    ..
    <javac ... classpathref="compile.path"/>
  </target>

Но также включен в конфигурацию «времени выполнения», которая сохраняется на диск как зависимость при сборке пакета jar:

  <target name="build" depends="compile">
    <ivy:retrieve pattern="${dist.dir}/lib/[artifact].[ext]" conf="runtime"/>

    <manifestclasspath property="jar.classpath" jarfile="${dist.jar}">
      <classpath>
        <fileset dir="${dist.dir}/lib" includes="*.jar"/>
      </classpath>
    </manifestclasspath>

    <jar destfile="${dist.jar}" basedir="${build.dir}/classes">
      <manifest>
        <attribute name="Main-Class" value="${dist.main.class}"/>
        <attribute name="Class-Path" value="${jar.classpath}"/>
      </manifest>
    </jar>
  </target>
13.04.2015
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]