kandi background
Explore Kits

mapstruct | An annotation processor for generating typesafe bean mappers | Build Tool library

 by   mapstruct Java Version: 1.5.0.RC1 License: Non-SPDX

 by   mapstruct Java Version: 1.5.0.RC1 License: Non-SPDX

Download this library from

kandi X-RAY | mapstruct Summary

mapstruct is a Java library typically used in Utilities, Build Tool, Spring applications. mapstruct has no bugs, it has no vulnerabilities, it has build file available and it has high support. However mapstruct has a Non-SPDX License. You can download it from GitHub, Maven.
MapStruct is a Java annotation processor for the generation of type-safe and performant mappers for Java bean classes. It saves you from writing mapping code by hand, which is a tedious and error-prone task. The generator comes with sensible defaults and many built-in type conversions, but it steps out of your way when it comes to configuring or implementing special behavior.
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • mapstruct has a highly active ecosystem.
  • It has 5053 star(s) with 704 fork(s). There are 129 watchers for this library.
  • There were 1 major release(s) in the last 6 months.
  • There are 321 open issues and 1529 have been closed. On average issues are closed in 117 days. There are 15 open pull requests and 0 closed requests.
  • It has a positive sentiment in the developer community.
  • The latest version of mapstruct is 1.5.0.RC1
mapstruct Support
Best in #Build Tool
Average in #Build Tool
mapstruct Support
Best in #Build Tool
Average in #Build Tool

quality kandi Quality

  • mapstruct has 0 bugs and 0 code smells.
mapstruct Quality
Best in #Build Tool
Average in #Build Tool
mapstruct Quality
Best in #Build Tool
Average in #Build Tool

securitySecurity

  • mapstruct has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
  • mapstruct code analysis shows 0 unresolved vulnerabilities.
  • There are 0 security hotspots that need review.
mapstruct Security
Best in #Build Tool
Average in #Build Tool
mapstruct Security
Best in #Build Tool
Average in #Build Tool

license License

  • mapstruct has a Non-SPDX License.
  • Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.
mapstruct License
Best in #Build Tool
Average in #Build Tool
mapstruct License
Best in #Build Tool
Average in #Build Tool

buildReuse

  • mapstruct releases are available to install and integrate.
  • Deployable package is available in Maven.
  • Build file is available. You can build the component from source.
  • Installation instructions are not available. Examples and code snippets are available.
  • mapstruct saves you 88226 person hours of effort in developing the same functionality from scratch.
  • It has 103062 lines of code, 12501 functions and 3061 files.
  • It has low code complexity. Code complexity directly impacts maintainability of the code.
mapstruct Reuse
Best in #Build Tool
Average in #Build Tool
mapstruct Reuse
Best in #Build Tool
Average in #Build Tool
Top functions reviewed by kandi - BETA

kandi has reviewed mapstruct and discovered the below as its top functions. This is intended to give you an instant insight into mapstruct implemented functionality, and help decide if they suit your requirements.

  • Gets the mappings from the given mapper annotation .
  • Check parameter and return type parameters .
  • Builds the RHS .
  • Initializes the map .
  • Apply the given options to the template .
  • Adds the instance .
  • Finds the matching method binding
  • Returns a map of property write accessors .
  • Get the final final method for a builder .
  • Entry point for debugging .

mapstruct Key Features

Fast execution by using plain method invocations instead of reflection

Compile-time type safety. Only objects and attributes mapping to each other can be mapped, so there's no accidental mapping of an order entity into a customer DTO, etc.

Self-contained code—no runtime dependencies

Clear error reports at build time if: mappings are incomplete (not all target properties are mapped) mappings are incorrect (cannot find a proper mapping method or type conversion)

Easily debuggable mapping code (or editable by hand—e.g. in case of a bug in the generator)

What is MapStruct?

copy iconCopydownload iconDownload
@Mapper
public interface CarMapper {

    CarMapper INSTANCE = Mappers.getMapper( CarMapper.class );

    @Mapping(target = "seatCount", source = "numberOfSeats")
    CarDto carToCarDto(Car car);
}

Maven

copy iconCopydownload iconDownload
...
<properties>
    <org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
</properties>
...
<dependencies>
    <dependency>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct</artifactId>
        <version>${org.mapstruct.version}</version>
    </dependency>
</dependencies>
...
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>org.mapstruct</groupId>
                        <artifactId>mapstruct-processor</artifactId>
                        <version>${org.mapstruct.version}</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>
...

Gradle

copy iconCopydownload iconDownload
plugins {
    ...
    id "com.diffplug.eclipse.apt" version "3.26.0" // Only for Eclipse
}

dependencies {
    ...
    compile 'org.mapstruct:mapstruct:1.4.2.Final'

    annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
    testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final' // if you are using mapstruct in test code
}
...

Building from Source

copy iconCopydownload iconDownload
mvn clean install

Mapstruct - cannot find symbol [Kotlin + Maven]

copy iconCopydownload iconDownload
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <executions>
                    <!-- Replacing default-compile as it is treated specially by maven -->
                    <execution>
                        <id>default-compile</id>
                        <phase>none</phase>
                    </execution>
                    <!-- Replacing default-testCompile as it is treated specially by maven -->
                    <execution>
                        <id>default-testCompile</id>
                        <phase>none</phase>
                    </execution>
                    <execution>
                        <id>java-compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>java-test-compile</id>
                        <phase>test-compile</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

Hwo can I convert from entity to dto with Null value in JPA

copy iconCopydownload iconDownload
private int score;
private Integer score;
-----------------------
private int score;
private Integer score;

Is asserting mocked object and method necessary in Unit Test(JUnit 5)?

copy iconCopydownload iconDownload
var pN = mock(ParamN.class);
// possibly stub some interactions with pN
var modelObject = new ModelObject(10, 20, pN);
var mockModelObject = mock(ModelObject.class); 
when(mockModelObject.getId()).thenReturn(10); 
-----------------------
var pN = mock(ParamN.class);
// possibly stub some interactions with pN
var modelObject = new ModelObject(10, 20, pN);
var mockModelObject = mock(ModelObject.class); 
when(mockModelObject.getId()).thenReturn(10); 

How to implement a partial custom mapping with MapStruct?

copy iconCopydownload iconDownload
@Mapper(componentModel = "cdi")
public interface MyMapper {

    @Mapping(target = "fieldRequiringCustomMapping", qualifiedByName = "customFieldMapping")
    MyDto toDTO(MyEntity myEntity);

    // The @(org.mapstruct.)Named is only needed if the Return and Target type are not unique
    @Named("customFieldMapping")
    default FieldRequiringCustomMapping customMapping(SourceForFieldRequiringCustomMapping source) {
        // Custom mapping here resulting in a Map<> map
        return map
    }
    
}

Calling javac the way Maven does

copy iconCopydownload iconDownload
stockapp-spring-boot (master)$ mvn clean compile 
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO] 
[INFO] stockapp-spring-boot                                               [pom]
[INFO] stockapp                                                           [jar]
[INFO] 
[INFO] -------------< it.raffaele.esposito:stockapp-spring-boot >--------------
[INFO] Building stockapp-spring-boot 1.2.2-SNAPSHOT                       [1/2]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ stockapp-spring-boot ---

 ...

[INFO] --- maven-resources-plugin:3.2.0:resources (default-resources) @ stockapp ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 14 resources
[INFO] The encoding used to copy filtered properties files have not been set. This means that the same encoding will be used to copy filtered properties files as when copying other filtered resources. This might not be what you want! Run your build with --debug to see which files might be affected. Read more at https://maven.apache.org/plugins/maven-resources-plugin/examples/filtering-properties-files.html
[INFO] 
[INFO] --- maven-resources-plugin:3.2.0:copy-resources (Copy Vue frontend into Spring Boot target static folder) @ stockapp ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 8 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.7.0:compile (default-compile) @ stockapp ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 27 source files to stockapp-spring-boot/stockapp/target/classes
[INFO] stockapp-spring-boot/stockapp/src/main/java/it/raffaele/esposito/app/service/MappingFunctions.java: stockapp-spring-boot/stockapp/src/main/java/it/raffaele/esposito/app/service/MappingFunctions.java uses or overrides a deprecated API.
[INFO] stockapp-spring-boot/stockapp/src/main/java/it/raffaele/esposito/app/service/MappingFunctions.java: Recompile with -Xlint:deprecation for details.
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for stockapp-spring-boot 1.2.2-SNAPSHOT:
[INFO] 
[INFO] stockapp-spring-boot ............................... SUCCESS [  0.090 s]
[INFO] stockapp ........................................... SUCCESS [ 21.988 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  22.339 s
[INFO] Finished at: 2022-01-17T20:12:05+01:00
[INFO] ------------------------------------------------------------------------

Use another MapStruct mapper only inside an expression clause

copy iconCopydownload iconDownload
@Mapper(injectionStrategy = InjectionStrategy.CONSTRUCTOR, componentModel = "spring", uses = {TransactionMapper.class, EventMapper.class})
public abstract class GameMapper {

    @Autowired
    protected TransactionMapper transactionMapper;

    @Mapping(target = "transaction", 
        expression = "java(transactionMapper.transactionToDto(findTransactionForPlayer(game, idPlayer)))")
    public abstract GameResultDto gameToGameResultDto(Game game, Long idPlayer);

    // Some more methods

}

How to map from Model entity with list of Objects and one more Object to single Domain entity with Mapstruct

copy iconCopydownload iconDownload
    DomainUser UserToDUser(User user, CountryDetails countryDetails);

    default List<DomainUser> UsersToDomainUsers(List<User> users, CountryDetails countryDetails) {
        return users.stream()
                .map((user -> UserToDUser(user, countryDetails)))
                .collect(Collectors.toList());
    }

Mapper function null parameter check

copy iconCopydownload iconDownload
public class MapperImpl implements Mapper {
    public Target toTarget(SourceA sourceA, SourceB sourceB, SourceC sourceC){

        Target.Builder builder = Target.builder();
        // map objects
        return builder.builder();
    }
}

Convert List of Objects to List of Long IDs using Mapstruct

copy iconCopydownload iconDownload
@Mapper
public interface AMapper {
    
    @Mapping(source = "bs", target = "bIds", qualifiedByName = "bToId")
    public ADto aToADto(A a);
    
    @Named("bToId") 
    public static Long bToId(B b) { 
        return b.getId(); 
    }
}
-----------------------
public interface HasId {
  long getId();
}

@Builder
@Value
public class A implements HasId {
  long id;
  List<B> bs;
}


@Builder
@Value
public class B implements HasId {
  long id;
}
@Mapper
public class HasIdMapper {
  final long toId(HasId entity) {
    return entity.getId();
  }
}
@Builder
@Value
public class ADto {
  List<Long> bIds;
}
@Mapper(uses = HasIdMapper.class)
public interface AMapper {
  @Mapping(source = "bs", target = "bIds")
  ADto toDto(A entity);
}
  public static void main(String... args) {
    final A a = A.builder()
        .bs(List.of(
            B.builder().id(1).build(),
            B.builder().id(2).build(),
            B.builder().id(3).build()))
        .build();
    final ADto dto = Mappers.getMapper(AMapper.class).toDto(a);
    System.out.println(dto);
  }
ADto(bIds=[1, 2, 3])
-----------------------
public interface HasId {
  long getId();
}

@Builder
@Value
public class A implements HasId {
  long id;
  List<B> bs;
}


@Builder
@Value
public class B implements HasId {
  long id;
}
@Mapper
public class HasIdMapper {
  final long toId(HasId entity) {
    return entity.getId();
  }
}
@Builder
@Value
public class ADto {
  List<Long> bIds;
}
@Mapper(uses = HasIdMapper.class)
public interface AMapper {
  @Mapping(source = "bs", target = "bIds")
  ADto toDto(A entity);
}
  public static void main(String... args) {
    final A a = A.builder()
        .bs(List.of(
            B.builder().id(1).build(),
            B.builder().id(2).build(),
            B.builder().id(3).build()))
        .build();
    final ADto dto = Mappers.getMapper(AMapper.class).toDto(a);
    System.out.println(dto);
  }
ADto(bIds=[1, 2, 3])
-----------------------
public interface HasId {
  long getId();
}

@Builder
@Value
public class A implements HasId {
  long id;
  List<B> bs;
}


@Builder
@Value
public class B implements HasId {
  long id;
}
@Mapper
public class HasIdMapper {
  final long toId(HasId entity) {
    return entity.getId();
  }
}
@Builder
@Value
public class ADto {
  List<Long> bIds;
}
@Mapper(uses = HasIdMapper.class)
public interface AMapper {
  @Mapping(source = "bs", target = "bIds")
  ADto toDto(A entity);
}
  public static void main(String... args) {
    final A a = A.builder()
        .bs(List.of(
            B.builder().id(1).build(),
            B.builder().id(2).build(),
            B.builder().id(3).build()))
        .build();
    final ADto dto = Mappers.getMapper(AMapper.class).toDto(a);
    System.out.println(dto);
  }
ADto(bIds=[1, 2, 3])
-----------------------
public interface HasId {
  long getId();
}

@Builder
@Value
public class A implements HasId {
  long id;
  List<B> bs;
}


@Builder
@Value
public class B implements HasId {
  long id;
}
@Mapper
public class HasIdMapper {
  final long toId(HasId entity) {
    return entity.getId();
  }
}
@Builder
@Value
public class ADto {
  List<Long> bIds;
}
@Mapper(uses = HasIdMapper.class)
public interface AMapper {
  @Mapping(source = "bs", target = "bIds")
  ADto toDto(A entity);
}
  public static void main(String... args) {
    final A a = A.builder()
        .bs(List.of(
            B.builder().id(1).build(),
            B.builder().id(2).build(),
            B.builder().id(3).build()))
        .build();
    final ADto dto = Mappers.getMapper(AMapper.class).toDto(a);
    System.out.println(dto);
  }
ADto(bIds=[1, 2, 3])
-----------------------
public interface HasId {
  long getId();
}

@Builder
@Value
public class A implements HasId {
  long id;
  List<B> bs;
}


@Builder
@Value
public class B implements HasId {
  long id;
}
@Mapper
public class HasIdMapper {
  final long toId(HasId entity) {
    return entity.getId();
  }
}
@Builder
@Value
public class ADto {
  List<Long> bIds;
}
@Mapper(uses = HasIdMapper.class)
public interface AMapper {
  @Mapping(source = "bs", target = "bIds")
  ADto toDto(A entity);
}
  public static void main(String... args) {
    final A a = A.builder()
        .bs(List.of(
            B.builder().id(1).build(),
            B.builder().id(2).build(),
            B.builder().id(3).build()))
        .build();
    final ADto dto = Mappers.getMapper(AMapper.class).toDto(a);
    System.out.println(dto);
  }
ADto(bIds=[1, 2, 3])
-----------------------
public interface HasId {
  long getId();
}

@Builder
@Value
public class A implements HasId {
  long id;
  List<B> bs;
}


@Builder
@Value
public class B implements HasId {
  long id;
}
@Mapper
public class HasIdMapper {
  final long toId(HasId entity) {
    return entity.getId();
  }
}
@Builder
@Value
public class ADto {
  List<Long> bIds;
}
@Mapper(uses = HasIdMapper.class)
public interface AMapper {
  @Mapping(source = "bs", target = "bIds")
  ADto toDto(A entity);
}
  public static void main(String... args) {
    final A a = A.builder()
        .bs(List.of(
            B.builder().id(1).build(),
            B.builder().id(2).build(),
            B.builder().id(3).build()))
        .build();
    final ADto dto = Mappers.getMapper(AMapper.class).toDto(a);
    System.out.println(dto);
  }
ADto(bIds=[1, 2, 3])

MapStruct Java: property to list

copy iconCopydownload iconDownload
@Mapper
public interface ResultTypeToProvinciaMapper {
    
    ResultTypeToProvinciaMapper INSTANCE = Mappers.getMapper(ResultTypeToProvinciaMapper.class);
    

    default List<Provincia> resultSetToListOfProvincia(ResultSetType resultSetType) {
        if (resultSetType == null) {
            return null;
        }

        Results results = resultSetType.getResults();

        if (results == null) {
            return null;
        }
        return resultTypesToProvincias(results.getResult());
    }


    List<Provincia> resultTypesToProvincias(List<ResultType> resultTypes);

    @Mapping(source = "id", target = "code")
    @Mapping(source = "description", target = "name")
    Provincia resultTypeToProvincia(ResultType resultType);

}

Community Discussions

Trending Discussions on mapstruct
  • Mapstruct - cannot find symbol [Kotlin + Maven]
  • Hwo can I convert from entity to dto with Null value in JPA
  • Is asserting mocked object and method necessary in Unit Test(JUnit 5)?
  • Mapper is not using another mapper, how to use a mapper from another mapper?
  • @SubclassMapping order
  • MapStruct dependency scope in a Maven project
  • How to implement a partial custom mapping with MapStruct?
  • Calling javac the way Maven does
  • Use another MapStruct mapper only inside an expression clause
  • How to map from Model entity with list of Objects and one more Object to single Domain entity with Mapstruct
Trending Discussions on mapstruct

QUESTION

Mapstruct - cannot find symbol [Kotlin + Maven]

Asked 2022-Mar-30 at 01:32

I'm having the following error when I run the command mvn clean install:

[ERROR] /Users/xxx/xxx/xxx/xxx.xxx/target/generated-sources/kapt/compile/com/xxx/xxx/xxx/xxx/DataMapperImpl.java:[10,40] cannot find symbol
[ERROR]   symbol: class DataMapperDecorator
[ERROR] /Users/xxx/xxx/xxx/xxx.xxx/target/generated-sources/kapt/compile/com/xxx/xxx/xxx/xxx/DataMapperImpl.java:[10,74] cannot find symbol
[ERROR]   symbol: class DataMapper
[ERROR] /Users/xxx/xxx/xxx/xxx.xxx/xxx/generated-sources/kapt/compile/com/xxx/xxx/xxx/api/DataMapperImpl.java:[12,19] cannot find symbol
[ERROR]   symbol:   class DataMapper
[ERROR]   location: class com.xxx.xxx.xxx.xxx.DataMapperImpl

It seems that after mapstruct has generated the DataMapperImpl.java class it is not able to find the classes DataMapper and DataMapperDecoretor.

The code related to mapstruct is in a xxx.kt file:

//Other stuff
...

@Mapper
@DecoratedWith(DataMapperDecorator::class)
interface DataMapper {
    @Mappings(
        Mapping(source = "data.value", target = "dataValue"),
        Mapping(source = "data.current.value", target = "currentValue"),
    )
    fun toDto(data: Data) : RefDataDto
}

abstract class DataMapperDecorator : DataMapper {
    @Autowired
    private val delegate: DataMapper? = null

    override fun toDto(data: Data): dataDto {
        val dataDto = delegate!!.toDto(data)
        dataDto.primaryValue = data.primaryValue?.let { CurrencyUtil.toMajor(it) }
        return dataDto
    }
}

Regarding the pom files I have in the root file:

...
    <properties>
    ... 
        <org.mapstruct.version>1.4.2.Final</org.mapstruct.version>
    </properties>
...

and this is the pom of the module where I'm using mapstruct:

...
        <build>
            <finalName>${project.artifactId}</finalName>
            <plugins>
                <plugin>
                    <groupId>org.jetbrains.kotlin</groupId>
                    <artifactId>kotlin-maven-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>compile</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>compile</goal>
                            </goals>
                            <configuration>
                                <sourceDirs>
                                    <sourceDir>src/main/kotlin</sourceDir>
                                </sourceDirs>
                            </configuration>
                        </execution>
                        <execution>
                            <id>test-compile</id>
                            <goals>
                                <goal>test-compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>kapt</id>
                            <goals>
                                <goal>kapt</goal>
                            </goals>
                            <configuration>
                                <annotationProcessorPaths>
                                    <annotationProcessorPath>
                                        <groupId>org.mapstruct</groupId>
                                        <artifactId>mapstruct-processor</artifactId>
                                        <version>${org.mapstruct.version}</version>
                                    </annotationProcessorPath>
                                </annotationProcessorPaths>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                ...
            </plugins>
...

I hid some part of the files with dots and I'm not using the project Lombok (I saw same problems related with it we you are trying to use these projects together).

UPDATE 1:

I noticed that the error is related to the fact that from the generated class DataMapperImpl.java the package where there are the classes that this generated class should use is not visible. Indeed I see this error:

[ERROR] /Users/xxx/xxx/xxx/xxx.xxx/xxx/generated-sources/kapt/compile/com/xxx/xxx/xxx/xxx/RefDataMapperImpl.java:[3,47] package com.my.package.application.domain does not exist

and of course this package exist!

UPDATE 2:

I'm continuing to investigate on this issue. I tried to make it simpler deleting the DataMapperDecorator and put the DataMapper, the Data and the DataDto class in the same file. Still the same error cannot find symbol: class for all the three classes. I'm not sure if this is related to the fact that in the DataMapperImpl (the generated class) doesn't have the import of these classes. There are imports just for the standard java libraries such as:

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.UUID;
import javax.annotation.processing.Generated;

EDIT 1:

From the log I can also see the following warning:

[WARNING] 'tools.jar' was not found, kapt may work unreliably

UPDATE 3:

Without mapstruct under target->classes (using IntelliJ IDEA) I can see the classes of my project. On the other hand when I have introduced mapstruct what I'm seeing is that the mapstruct classes are generated under target->generated-sources->kapt->compile but under target->classes I don't see the other classes. Could the mapstruct classes be generated earlier than the other classes of my project causing the compiler to not find the Data, DataDto classes?

ANSWER

Answered 2021-Aug-17 at 17:20

I am not sure how Kotlin works with multiple classes in one source file.

What I would suggest is that you use dedicated files for the decorator and the mapper. That way MapStruct will create the correct code.

MapStruct is a Java annotation processor, we do not know anything about the Kotlin structure. It seems like the packages returned by the java annotation processing API are not correct.

Source https://stackoverflow.com/questions/68819675

Community Discussions, Code Snippets contain sources that include Stack Exchange Network

Vulnerabilities

No vulnerabilities reported

Install mapstruct

You can download it from GitHub, Maven.
You can use mapstruct like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the mapstruct component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .

Support

To learn more about MapStruct, refer to the project homepage. The reference documentation covers all provided functionality in detail. If you need help, come and join the mapstruct-users group.

DOWNLOAD this Library from

Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

Explore Related Topics

Share this Page

share link
Compare Build Tool Libraries with Highest Support
Compare Build Tool Libraries with Highest Reuse
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

  • © 2022 Open Weaver Inc.