Обновление № 1
Я не уверен, что это хорошее решение, но в качестве быстрого обходного пути я смог получить его на основе maven-2.x / Idea, понизив JFace с 3.3.0-I20070606-0010 до 3.2.1-M20060908- 1000
Исходное сообщение
Я пытаюсь разработать приложение SWT / JFace с IntelliJ Idea 11.0.2 и Maven. Проблема:
Idea использует внутренне что-то, похожее на API-интерфейс maven-2.x, поэтому не может обрабатывать версии с суффиксом (например, «1.0-v666999» вместо простого «1.0») в диапазонах версий, которые используются в org.eclipse: Jface Maven артефакт. Тем не менее, Maven-3.0 может легко справиться с ними.
Итак, взаимоисключающие вопросы:
- Как настроить Idea для использования maven-3.0 в качестве внутреннего движка maven (чтобы он мог правильно разрешить все операции импорта)
- Как "обойти" такие суффиксы версий с помощью инструментов maven-2.x, так что идея, артефакты maven JFace и сам maven могли бы хорошо играть вместе?
- Есть ли способ "сопоставить" версии для maven, например "1.0-v666999" -> "1.0"?
- Есть ли способ принудительного использования определенной версии артефакта?
- Ваши идеи -?
Вот пример pom.xml, который использует JFace, который использует ранжированные версии:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>repotest</groupId>
<artifactId>repotest</artifactId>
<version>1.0-SNAPSHOT</version>
<name>Archetype - repotest</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>${swt.groupId}</groupId>
<artifactId>${swt.artifactId}</artifactId>
<version>3.3.0-v3346</version>
</dependency>
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>jface</artifactId>
<version>3.3.0-I20070606-0010</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>mac</id>
<activation>
<os>
<name>mac os x</name>
</os>
</activation>
<properties>
<swt.groupId>org.eclipse.swt.carbon</swt.groupId>
<swt.artifactId>macosx</swt.artifactId>
</properties>
</profile>
<profile>
<id>windows</id>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<properties>
<swt.groupId>org.eclipse.swt.win32.win32</swt.groupId>
<swt.artifactId>x86</swt.artifactId>
</properties>
</profile>
<profile>
<id>unix</id>
<activation>
<os>
<family>unix</family>
</os>
</activation>
<properties>
<swt.groupId>org.eclipse.swt.gtk.linux</swt.groupId>
<swt.artifactId>x86</swt.artifactId>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>repotest.RootWindow</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
А вот файл src / main / java / repotest / RootWindow.java, используемый этим pom.xml:
package repotest;
import org.eclipse.swt.widgets.Display;
import org.eclipse.jface.window.ApplicationWindow;
public class RootWindow extends ApplicationWindow {
public static void main(String[] args) {
ApplicationWindow rootWindow = new RootWindow();
rootWindow.setBlockOnOpen(true);
rootWindow.open();
Display.getCurrent().dispose();
}
public RootWindow() {
super(null);
}
}