如何只使用"mvn clean install"编译项目,而不必随后运行"mvn inst



我正在尝试编译同时使用MapstructImmutables的项目。解决我问题的唯一解决方案是运行:

  1. mvn clean compile->编译失败;无法从Immutables中找到生成的类
  2. mvn compile->成功

这对我来说是不可接受的。

我已经尝试了推荐的解决方案,您可以在代码部分看到。我也看过:

  • https://github.com/mapstruct/mapstruct/issues/1596
  • https://github.com/mapstruct/mapstruct/issues/1270

。。。

<mapstruct.version>1.3.0.Beta2</mapstruct.version>
<immutables.version>2.7.3</immutables.version>

<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</dependency>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.immutables</groupId>
<artifactId>value</artifactId>
<version>${immutables.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>

为了编译项目,我希望只能运行mvn clean compile

经过几个小时的构建,我注意到这一行恰好是构建失败的原因:

@Mapper(imports = {ImmutableFirstType.class, ImmutableSecondType.class})     // this one
public interface FirstSecondTypeMapper {

我认为imports是必要的,以便使Immutablesmapstruct一起工作。刚用了@Mapper,一切都很好。

最新更新