所以codehaus关闭了(显然是在周末):https://www.codehaus.org/
现在它在这里说" Maven:所有存储库都被镜像到Central,而我们的Nexus由Sonatype"托管。如果我正确地阅读这个,这意味着它应该继续工作(并且因为Central是默认存储库,我甚至不应该进行任何更改)。
然而,我遇到了一个用于编译的Maven项目(在关闭之前),但现在失败了:
[INFO] Error building POM (may not be this project's POM).
Project ID: org.codehaus.groovy:groovy-eclipse-compiler:maven-plugin:2.9.1-01
Reason: Cannot find parent: org.codehaus:codehaus-parent for project: org.codehaus.groovy:groovy-eclipse-compiler:maven-plugin:2.9.1-01 for project org.codehaus.groovy:groovy-eclipse-compiler:maven-plugin:2.9.1-01
这是我的pom.xml的精简版:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.hp</groupId>
<artifactId>device-state-service</artifactId>
<packaging>war</packaging>
<version>1.0.0</version>
<name>device-state-service</name>
<properties>
<spring.version>3.2.0.RELEASE</spring.version>
<groovy-all.version>2.3.7</groovy-all.version>
<spock-core.version>0.7-groovy-2.0</spock-core.version>
<lombok.version>1.12.2</lombok.version>
...
</properties>
<dependencies>
...
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>${groovy-all.version}</version>
</dependency>
...
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
...
<dependency>
<groupId>org.spockframework</groupId>
<artifactId>spock-core</artifactId>
<version>${spock-core.version}</version>
<scope>test</scope>
</dependency>
...
<dependency>
<groupId>org.codehaus.groovy.modules.http-builder</groupId>
<artifactId>http-builder</artifactId>
<version>0.7</version>
<scope>test</scope>
</dependency>
...
</dependencies>
<build>
<finalName>dss</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<compilerId>groovy-eclipse-compiler</compilerId>
<verbose>false</verbose>
<compilerArguments>
<javaAgentClass>lombok.core.Agent</javaAgentClass>
</compilerArguments>
<fork>true</fork>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-compiler</artifactId>
<version>2.9.1-01</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-eclipse-batch</artifactId>
<version>2.3.7-01</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
</dependencies>
</plugin>
...
</plugins>
</build>
<profiles>
<profile>
<id>dss</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>deliverable</name>
<value>dss</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1-alpha-1</version>
<executions>
<execution>
<goals>
<goal>rpm</goal>
</goals>
</execution>
</executions>
<configuration>
...
<name>${deliverable}</name>
<projversion>${pom.version}</projversion>
<release>${BUILD_NUMBER}</release>
<description>Search: RPM package</description>
<mappings>
<mapping>
<directory>${tomcatInstallationDir}</directory>
<filemode>755</filemode>
<username>tomcat</username>
<groupname>tomcat</groupname>
<sources>
<source>
<location>../Tomcat/</location>
</source>
</sources>
</mapping>
<mapping>
<directory>${tomcatInstallationDir}/webapps</directory>
<filemode>755</filemode>
<username>tomcat</username>
<groupname>tomcat</groupname>
<sources>
<source>
<location>target/${deliverable}.war
</location>
<destination>${deliverable}.war</destination>
</source>
</sources>
</mapping>
</mappings>
<requires>
<require>palm-jre >= 1.6.0_27-fcs</require>
</requires>
<prefix>${tomcatInstallationDir}</prefix>
<preinstallScriptlet>
<scriptFile>../PlatformEngine/rpm_scripts/pre_install.sh</scriptFile>
<fileEncoding>utf-8</fileEncoding>
</preinstallScriptlet>
<postinstallScriptlet>
<scriptFile>../PlatformEngine/rpm_scripts/post_install.sh</scriptFile>
<fileEncoding>utf-8</fileEncoding>
</postinstallScriptlet>
<preremoveScriptlet>
<scriptFile>../PlatformEngine/rpm_scripts/pre_uninstall.sh</scriptFile>
<fileEncoding>utf-8</fileEncoding>
</preremoveScriptlet>
<postremoveScriptlet>
<scriptFile>../PlatformEngine/rpm_scripts/post_uninstall.sh</scriptFile>
<fileEncoding>utf-8</fileEncoding>
</postremoveScriptlet>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
现在,在我的.m2目录中,我为groovy-all
项目找到了一个pom / sha1和一个jar文件。但对于groovy-eclipse-compiler
,我看到了pom / sha1,但没有jar文件。
我做错了吗? Codehaus迁移中的某些东西是否会以某种方式搞砸了?或者(更糟)两者?
答案 0 :(得分:1)
maven文物已经存在很长时间了,没有任何移植可能会被搞砸了。
因为我不是专家,所以我只能给你我认为的原因。查看groovy-eclipse-compiler版本2.9.1-01的pom,我看到了
<repositories>
<repository>
<id>codehaus.org</id>
<url>http://repository.codehaus.org</url>
</repository>
</repositories>
我的假设是,这将导致maven查看该存储库,该存储库不再存在。如果这是真的,那么我对解决方案的建议是手动安装工件(它们都在maven中心)或者使用不同的工具(如gradle(尽管这可能超出了你的范围)来进行构建)。
<强> 编辑: 强> 我被告知您可以更改settings.xml以使用如下模式修复存储库配置:
<repositories>
<repository>
<id>codehaus.org</id>
<url>http://nexus.codehaus.org/<some suburl></url>
</repository>
</repositories>
然后使用http://mvnrepository.com/artifact可能会有效,但我没有对此进行测试。
答案 1 :(得分:0)
您引用的工件:
org.codehaus.groovy:groovy-eclipse-compiler:maven-plugin:2.9.1-01
如果你的版本找不到这个,那么你的配置就错了。网络/代理问题等(请参阅您的settings.xml)您可以通过以下方式在Maven中心搜索此工件:http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.codehaus.groovy%22%20AND%20a%3A%22groovy-eclipse-compiler%22
除了添加补充存储库之外,这无济于事。此外,在Maven pom中添加默认值如下:
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<testResources>
<testResource>
<directory>src/test/resources</directory>
</testResource>
</testResources>
也没有意义,因为这些是默认值。我偶然发现的是你正在定义像编码这样的东西:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
首先定义这样的插件版本是好的(但你应该使用uptodate versions)但是你不应该在每个插件中定义编码。为此目的,存在一个属性:
<project>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
...
</project>
通过使用上述内容,您无需为每个插件提供编码,因此maven-resources-plugin,maven-compiler-plugin等插件会定义默认值。
关于codehaus migration的一句话。这意味着只有他们为开发人员提供的服务才会关闭,而不是已经属于Maven central的内容。
我建议在您自己的基础架构中安装存储库管理器。