Плагин Maven Embedded Glassfish
-
19-09-2019 - |
Вопрос
Кажется, я не могу заставить плагин Maven Glassfish работать хоть убей:
<project>
...
<pluginRepositories>
<pluginRepository>
<id>glassfish-repository</id>
<name>Java.net Repository for Glassfish</name>
<url>http://download.java.net/maven/glassfish</url>
<layout>default</layout>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
...
<build>
<plugins>
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.0</version>
<configuration>
<goalPrefix>glassfish</goalPrefix>
<app>${artifactId}.war</app>
<contextRoot>${context.root}</contextRoot>
<port>${http.port}</port>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
Когда я бегу mvn glassfish:run
, он ищет другой плагин и не может его найти:
[INFO] The plugin 'org.apache.maven.plugins:maven-glassfish-plugin' does not exist or no valid version could be found
Есть идеи?
Решение
Вы используете не тот плагин.Должен быть:
mvn embedded-glassfish:run
На самом деле я использую это так:(с тем же репозиторием плагинов, который вы указали):
<plugins>
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.0</version>
<configuration>
<goalPrefix>glassfish</goalPrefix>
<app>target/test.war</app>
<port>8080</port>
<contextRoot>test</contextRoot>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
Обновлять: На всякий случай полное имя этот плагин будет:
mvn org.glassfish:maven-embedded-glassfish-plugin:3.0:run
Но использование короткого имени мне подходит.
Другие советы
@Walter White (не могу/не знаю, как ответить на ваш комментарий, поэтому отвечаю вместо этого):Я читал, что разбросанные ВОЙНЫ не полностью поддерживается встроенным GlassFish v3.
Лично я с нетерпением жду версии 3.1 с поддержкой Timer и MessageDriven.Надеюсь, поддержка веб-сервисов также будет включена.Есть ли у кого-нибудь сведения о расчетном времени прибытия для версии 3.1?
ПС: mvn org.glassfish:maven-embedded-glassfish-plugin:3.0:run
работает для меня.Сейчас подключу его к правильному жизненному циклу интеграционного теста maven.
Эта проблема возникает из-за того, что существуют два разных плагина maven-glassfish с одним и тем же именем.Попробуй использовать
mvn org.glassfish:maven-glassfish-plugin:run
Подробное объяснение этой проблемы вы можете найти здесь.
см. рабочий пример на github
пакет mvn Embedded-Glassfish: Run
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.glassfish.embedded</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.1.2.2</version>
<configuration>
<app>target/${project.artifactId}-${project.version}</app>
<port>8080</port>
<contextRoot>${project.artifactId}</contextRoot>
</configuration>
<dependencies>
<dependency>
<groupId>org.glassfish.main</groupId>
<artifactId>simple-glassfish-api</artifactId>
<version>4.0-b79</version>
</dependency>
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>4.0-b83</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
<pluginRepositories>
<pluginRepository>
<id>maven.java.net</id>
<name>Java.net Repository for Maven</name>
<url>https://maven.java.net/content/groups/promoted/</url>
</pluginRepository>
<pluginRepository>
<id>maven2-repository.dev.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/glassfish/</url>
</pluginRepository>
</pluginRepositories>