Как использовать artifactId с другим именем файла в зависимостях - PullRequest
2 голосов
/ 06 декабря 2011

Используя Artifactory и Maven, как можно ссылаться на зависимость с правильной группой / artifactId / version, но использовать имя файла, которое отличается от стиля artifactId-version.end?

Проблема связана с DLLчто нельзя переименовать, а обязательно?Соглашение об именовании артефактов.


edit
нашел один из возможных дорогостоящих способов решения этой конкретной проблемы, когда имя файла не может содержать тире: создание нового макета хранилища Artifactory, для которогонеобходима про-версия - так что, к сожалению, это не вариант!


частично решение для тестов jUnit
с использованием плагина maven-dependency-plugin и maven-Верные плагины можно заставить работать jUnits.к сожалению, это не решает проблему того, что конкретный sapjco3.dll не может быть найден при развертывании в войне на сервере.

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <id>copy</id>
                    <goals>
                        <goal>copy</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>sapjco</groupId>
                                <artifactId>sapjco3</artifactId>
                                <version>3.0.7</version>
                                <type>dll</type>
                                <classifier>win32</classifier>
                                <overWrite>true</overWrite>
                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                        <stripVersion>true</stripVersion>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <systemProperties>
                    <property>
                        <name>java.library.path</name>
                        <value>${project.build.directory}/lib</value>
                    </property>
                </systemProperties>
            </configuration>
        </plugin>
    </plugins>
</build>

1 Ответ

2 голосов
/ 06 декабря 2011

Maven не заботится об именах файлов, он заботится об их координатах. Добавьте вашу DLL правильно в ваше удаленное хранилище, а maven сделает все остальное. Фрагмент зависимости может быть:

<dependency>
  <groupId>com.company</groupId>
  <artifactId>my.artifact</atifactId>
  <version>1.0</version>
  <type>dll</type>
  <classifier>win32</classifier>
</dependency>

После того, как вы это сделали, используйте dependency:copy-dependencies или dependency:copy, чтобы изменить имя файла во время сборки.

...