2

使用 Artifactory 和 Maven,如何使用正确的 group/artifactId/version 引用依赖项,但使用与 artifactId-version.end 样式不同的文件名?

问题来自无法重命名的dll,并且是强制性的?工件命名约定。


编辑
为这个文件名不能包含破折号的特定问题找到了一种可能的昂贵方法:创建一个需要专业版的新 Artifactory 存储库布局 - 不幸的是,这不是一个选项!


使用 maven-dependency-plugin 和 maven-surefire-plugins的 jUnit 测试的部分解决方案
可以使 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>
4

1 回答 1

2

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-dependenciesdependency:copy在构建时更改文件名。

于 2011-12-06T13:55:51.390 回答