Я использую плагин spotify maven для создания изображения докеры фитнеса и запуска его на контейнер. Я могу принести аптеку и успешно запустить тесты локально, не используя patchify maven plugin и docker, но не тогда, когда я их использую. я получаю следующее сообщение об ошибке, когда я начинаю FitNesse Error messageОшибка при использовании при использовании с spotify maven plugin and docker
Вот содержимое FRONTPAGE FitNesse вики, которые обычно обычно заботятся о разрешении зависимостей согласно http://blog.xebia.com/fitnesse-and-dependency-management-with-maven/
!contents
! Определить TEST_SYSTEM {тонкого} ! pomFile pom.xml
! примечание Release $ {} FITNESSE_VERSION
Вот содержание моего pom.xml:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<shadeTestJar>true</shadeTestJar>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>fitnesseMain.FitNesseMain</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<configuration>
<baseImage>${docker.registry.host.slash}mcpi/service</baseImage>
<entryPoint>["java","-jar","${serviceBin}/${finalJarName}.jar","-p","8000"]</entryPoint>
<imageName>mcpi/${project.name}</imageName>
<runs>
<run>mkdir -p ${serviceHome}</run>
</runs>
<workdir>${serviceHome}</workdir>
<resources>
<resource>
<targetPath>${serviceHome}</targetPath>
<directory>${basedir}/src/test/resources</directory>
</resource>
<resource>
<targetPath>${serviceBin}</targetPath>
<directory>${basedir}/target</directory>
<include>${finalJarName}.jar</include>
</resource>
<resource>
<targetPath>${serviceBin}</targetPath>
<directory>${basedir}/target</directory>
<include>${finalTestJarName}.jar</include>
</resource>
<resource>
<targetPath>${serviceBin}</targetPath>
<directory>${basedir}</directory>
<include>pom.xml</include>
</resource>
</resources>
</configuration>
</plugin>
Я попытался удалить ! pomFile и добавлены файлы jar-файлов как путь к пути/в/location/*. jar_ в вики. Он может найти класс fixture, но не может разрешить зависимость, которую я использую в fixture ** java.lang.NoClassDefFoundError: org.springframework.test.context.TestContextManager **. Тем не менее, я не нашел класс TestContextManager в банке, даже когда я запускаю его локально, но в этом случае он не жалуется. Манекен с без зависимостей работает нормально. Моя проектная структура фитнеса - это фитнес/src/test/java вместо src/main/java, не уверен, что это влияет на поведение. – Raghu
Похоже, что теневой плагин не находит всех зависимостей (у меня были аналогичные проблемы в прошлом, вызванные тем, что классы ссылались через Spring/xml, а не заставляли тень не обнаруживать их как необходимые зависимости). Возможно, плагин зависимостей maven (с использованием его цели копий-зависимостей) работает лучше для вас: он получит все зависимости (а не только от используемых) за счет более крупного изображения докеров. (Использование 'dependency: copy-dependencies' также является подходом, который я использую в своих проектах для создания« автономной »версии установки для фитнеса.) –
Это работает как шарм. Благодаря! Я использовал ' true excludeTransitive>' с ** копиями-зависимостями **, чтобы избежать дополнительных зависимостей. –
Raghu