如何在依赖项中使用具有不同文件名的artifactId

时间:2011-12-06 13:05:37

标签: maven dependencies artifactory

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

问题来自一个无法重命名的DLL,并且是强制性的? Artifactory命名约定。


修改
发现这个特定问题的一种可能的昂贵方式,其中文件名不能包含破折号:创建一个需要专业版的新Artifactory存储库布局 - 所以不幸的是,这不是一个选项!


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

答案 0 :(得分: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在构建时更改文件名。