Привязать событие к родительскому объекту, который уже существует:
$(document).on("click", "selector", function() {
// Your code here
});
ПРИМЕЧАНИЕ:
Этот ответ относится только к Maven 2! Указанные LATEST
и RELEASE
метаверсии были отброшены в Maven 3 «ради воспроизводимых построений» более 6 лет назад. Пожалуйста, обратитесь к этому решению Maven 3 .
Если вы всегда хотите использовать новейшую версию, у Maven есть два ключевых слова, которые вы можете использовать в качестве альтернативы к диапазонам версий. Вы должны использовать эти параметры с осторожностью, поскольку вы больше не контролируете используемые вами плагины / зависимости.
Когда вы зависите от плагина или зависимости, вы можете использовать значение версии ПОСЛЕДНИЕ или РЕЛИЗЫ. LATEST относится к последней выпущенной или мгновенной версии определенного артефакта, самого недавно развернутого артефакта в конкретном репозитории. RELEASE относится к последнему выпуску, отличному от моментального снимка в репозитории. В целом, не рекомендуется разрабатывать программное обеспечение, которое зависит от неспецифической версии артефакта. Если вы разрабатываете программное обеспечение, вы можете использовать RELEASE или LATEST в качестве удобства, чтобы вам не приходилось обновлять номера версий при выпуске новой версии сторонней библиотеки. Когда вы выпускаете программное обеспечение, вы всегда должны следить за тем, чтобы ваш проект зависел от конкретных версий, чтобы уменьшить вероятность того, что ваша сборка или ваш проект пострадали от выпуска программного обеспечения, не находящегося под вашим контролем. Используйте LATEST и RELEASE с осторожностью, если это вообще возможно.
Подробнее см. Раздел POM Syntax в книге Maven . Или см. Этот документ в Диапазоны версий зависимостей , где:
- Квадратная скобка (
[
& amp;]
) означает «закрытая» (включительно).- Скобка (
(
& amp;)
) означает «открытый» (эксклюзивный).Вот пример, иллюстрирующий различные варианты. В репозитории Maven com.foo:my-foo имеет следующие метаданные:
<?xml version="1.0" encoding="UTF-8"?><metadata> <groupId>com.foo</groupId> <artifactId>my-foo</artifactId> <version>2.0.0</version> <versioning> <release>1.1.1</release> <versions> <version>1.0</version> <version>1.0.1</version> <version>1.1</version> <version>1.1.1</version> <version>2.0.0</version> </versions> <lastUpdated>20090722140000</lastUpdated> </versioning> </metadata>
Если требуется зависимость от этого артефакта, у вас есть следующие параметры (другие диапазоны версии можно указать, просто показывая соответствующие здесь):
Объявить точную версию (всегда будет разрешено 1.0.1):
<version>[1.0.1]</version>
Объявить явный version (всегда будет разрешаться до 1.0.1, если не произойдет столкновение, когда Maven выберет подходящую версию):
<version>1.0.1</version>
Объявить диапазон версий для всех 1.x (в настоящее время будет разрешено 1.1.1 ):
<version>[1.0.0,2.0.0)</version>
Объявить диапазон версий с открытым концом (будет разрешен до 2.0.0):
<version>[1.0.0,)</version>
Объявить версию как ПОСЛЕДНЕЕ (разрешить до 2.0.0 ) (удалено из maven 3.x)
<version>LATEST</version>
Объявить версию как RELEASE (будет разрешена к 1.1.1) (удалена из maven 3.x):
<version>RELEASE</version>
Обратите внимание, что по умолчанию ваши собственные развертывания будут обновлять «последнюю» запись в метаданных Maven, но для обновления записи «release» вам необходимо активировать " релиз-профиль "из Maven super POM . Вы можете сделать это с помощью «-Prelease-profile» или «-DperformRelease = true»
Следует подчеркнуть, что любой подход, который позволяет Maven выбирать версии зависимостей (ПОСЛЕДНИЙ, РЕЛИЗ и версия диапазоны) могут оставить вас открытыми для создания проблем времени, так как более поздние версии могут иметь другое поведение (например, плагин зависимостей ранее переключил значение по умолчанию от true на false, с запутанными результатами).
Поэтому вообще хорошая идея определить точные версии в выпусках. Как указывает ответ Тима , maven-versions-plugin - удобный инструмент для обновления версий зависимостей, особенно версии : использование последних версий и версии: use-latest-releases .
В отличие от других, я думаю, есть много причин, по которым вы можете всегда хотеть последнюю версию . В частности, если вы делаете непрерывное развертывание (иногда у нас есть как 5 выпусков за день), и я не хочу делать многомодульный проект.
Что я делаю, так это сделать Хадсон / Дженкинс сделать следующее для каждая сборка:
mvn clean versions:use-latest-versions scm:checkin deploy -Dmessage="update versions" -DperformRelease=true
То есть я использую плагин версий и плагин scm для обновления зависимостей, а затем проверяю его на исходный элемент управления. Да, я разрешаю моим CI делать SCM-проверки (что вам нужно сделать в любом случае для плагина релиза maven).
Вы хотите настроить плагин версий только для обновления того, что вы хотите:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>1.2</version>
<configuration>
<includesList>com.snaphop</includesList>
<generateBackupPoms>false</generateBackupPoms>
<allowSnapshots>true</allowSnapshots>
</configuration>
</plugin>
Я использую плагин release для выпуска, который заботится о -SNAPSHOT и подтверждает, что существует версия -SNAPSHOT (что важно).
Если вы делаете то, что я делаю вы получите самую последнюю версию для всех сборок снимков и последнюю версию для релизов.
Update
Я заметил некоторые комментарии, в которых прописаны некоторые особенности этого рабочего процесса. Я скажу, что мы больше не используем этот метод, и большая причина, по которой плагин maven-версий является ошибкой, и в целом по своей сути ошибочен.
Недостаток, потому что для запуска плагина версий для настройки версий все существующие версии должны существовать для корректной работы pom. То есть плагин версий не может обновлять до последней версии ничего, если он не может найти версию, указанную в pom. Это на самом деле довольно раздражает, поскольку мы часто очищаем старые версии по причинам дискового пространства.
На самом деле вам нужен отдельный инструмент от maven для настройки версий (чтобы вы не зависели от файла pom для правильной работы) , Я написал такой инструмент на смиренном языке, который является Bash. Сценарий обновит версии, такие как плагин версии, и вернет обратно обратно в исходный элемент управления. Он также работает как 100x быстрее, чем плагин версий mvn. К сожалению, это не написано для публичного использования, но если люди заинтересованы, я мог бы сделать это так и поместить его в gistub или github.
Возвращение к рабочему процессу, так как некоторые комментарии спрашивали об этом. что мы делаем:
На данный момент я считаю, что в любом случае неплохо иметь выпуск и автоматическую версию отдельного инструмента из вашей общей сборки.
Теперь вы может показаться maven вроде отстой из-за проблем, перечисленных выше, но на самом деле это было бы довольно сложно с помощью инструмента сборки, который не имеет декларативного, легко разбираемого расширяемого синтаксиса (так же XML).
На самом деле мы добавляем пользовательские атрибуты XML через пространства имен, чтобы помочь намекнуть bash / groovy-скрипты (например, не обновлять эту версию).
Если вы хотите, чтобы Maven использовала последнюю версию зависимости, вы можете использовать Версии Maven Plugin и как использовать этот плагин, Тим уже дал хороший ответ, следуйте его answer .
Но как разработчик, я не буду рекомендовать этот тип практики. ПОЧЕМУ?
ответ на вопрос, почему уже дал Паскаль Тивент в комментарии к вопросу
Я действительно не рекомендую эту практику ( ни с использованием диапазонов версий) для повышения воспроизводимости сборки. Сборка, которая начинает неожиданно сбой по неизвестной причине, более раздражает, чем вручную обновлять номер версии.
Я рекомендую этот тип практики:
<properties> <spring.version>3.1.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> </dependencies>
его легко поддерживать и легко отлаживать. Вы можете обновить свой POM в кратчайшие сроки.
Кто когда-либо использует ПОСЛЕДНЮЮ, пожалуйста, убедитесь, что у вас есть - иначе, последний снимок не будет вытащен.
mvn -U dependency:copy -Dartifact=com.foo:my-foo:LATEST
// pull the latest snapshot for my-foo from all repositories
Couldn't download artifact: Failed to resolve version for com.app:common:jar:LATEST
– Robert
14 May 2018 в 17:38
К тому времени, когда был задан этот вопрос, в maven были некоторые перегибы с диапазонами версий, но они были разрешены в более новых версиях maven. В этой статье очень хорошо видно, как работают диапазоны версий и лучшие практики, чтобы лучше понять, как maven понимает версии: https://docs.oracle.com/middleware/1212/core/MAVEN/maven_version.htm#MAVEN8855
Иногда вы не хотите использовать диапазоны версий, потому что кажется, что они «медленны» для решения ваших зависимостей, особенно когда есть непрерывная доставка на месте, и существует множество версий - в основном во время интенсивного развития.
Одним из способов было бы использовать версии-maven-plugin . Например, вы можете объявить свойство:
<properties>
<myname.version>1.1.1</myname.version>
</properties>
и добавить плагин версий-maven в ваш файл pom:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.3</version>
<configuration>
<properties>
<property>
<name>myname.version</name>
<dependencies>
<dependency>
<groupId>group-id</groupId>
<artifactId>artifact-id</artifactId>
<version>latest</version>
</dependency>
</dependencies>
</property>
</properties>
</configuration>
</plugin>
</plugins>
</build>
Затем, чтобы обновить зависимость , вы должны выполнить цели:
mvn versions:update-properties validate
Если версия отличается от версии 1.1.1, она сообщит вам:
[INFO] Updated ${myname.version} from 1.1.1 to 1.3.2
Возможно, вы зависите от версий разработки, которые явно меняются во время разработки?
Вместо того, чтобы увеличивать версию релизов разработки, вы можете просто использовать версию моментального снимка, которую вы перезаписываете, когда это необходимо, а это означает, что вам не придется менять тег версии при каждом незначительном изменении. Что-то вроде 1.0-SNAPSHOT ...
Но, может быть, вы пытаетесь добиться чего-то еще;)
Синтаксис зависимостей находится в документации к спецификации спецификации требований . Здесь это полнота:
Элементы зависимостей
version
определяют требования к версии, используемые для вычисления эффективной версии зависимостей. Требования к версии имеют следующий синтаксис:
1.0
: «Мягкое» требование 1.0 (просто рекомендация, если она соответствует всем другим диапазонам для зависимости)[1.0]
: «Жесткое» требование на 1.0(,1.0]
: x & lt; = 1,0[1.2,1.3]
: 1.2 & lt; = x & lt; = 1,3[1.0,2.0)
: 1,0 & lt; = x & lt; 2.0[1.5,)
: x> = 1.5(,1.0],[1.2,)
: x & lt; = 1,0 или x> = 1,2; несколько наборов разделены запятыми(,1.1),(1.1,)
: это исключает 1.1 (например, если, как известно, не работает в сочетании с этой библиотекой)В вашем случае вы можете сделать что-то вроде
<version>[1.2.3,)</version>
Пожалуйста, посмотрите на этой странице (раздел «Диапазоны версий зависимостей»). То, что вы можете сделать, это что-то вроде
<version>[1.2.3,)</version>
. Эти диапазоны версий реализованы в Maven2.
mvn dependency:tree -Dverbose
, чтобы понять это. Это может объяснить неожиданную версию.
– Eugene Beresovsky
19 July 2016 в 05:41
Теперь я знаю, что эта тема старая, но, читая вопрос и ответ на поставленный OP, кажется, что Maven Versions Plugin , возможно, был лучшим ответом на его вопрос:
В частности, могут быть использованы следующие цели:
Также предлагаются следующие цели:
Просто подумал, что я включу его для любой будущей ссылки.
Правда даже в 3.x все еще работает, на удивление, проекты строятся и развертываются. Но ключевое слово LATEST / RELEASE вызывает проблемы в m2e и eclipse повсюду, ТАКЖЕ проекты зависят от зависимости, которая развернута через LATEST / RELEASE, неспособность распознать версию.
Это также вызовет проблему, если вы пытаетесь определить версию как свойство и ссылаетесь на нее иначе.
Таким образом, вывод заключается в использовании -версий-maven-plugin , если вы можете.
[1.1,2.0)
– Amr Mostafa 4 August 2014 в 23:15