如何只用“ mvn clean install”编译项目而不必随后运行“ mvn install”?

时间:2019-01-23 16:30:25

标签: mapstruct maven-compiler-plugin immutables-library

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

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

我不接受哪个。

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

...

<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才能编译项目。

1 个答案:

答案 0 :(得分:0)

构建了几个小时的问题后,我注意到此行恰好是构建失败的原因:

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

我认为imports是使Immutablesmapstruct一起工作所必需的。只需使用@Mapper,一切都会好起来。