Hi ivyteam

As you know that in order to compile ivy project, we need to use project-build-plugin which has been developed by ivyteam.

There is a case that when i use third party, they have a custom compiler by annotation processor. There is available in maven-compiler-plugin

Example: alt text

My question is: Can we configure project-build-plugin for this config?

asked 23.03.2018 at 01:00

trungdv's gravatar image

accept rate: 52%

Yet it is not possible to pass annotation processing parameters to the project-build-plugin. But it would be a simple thing to support it. We almost had it, but dropped it then as it was no solution for the need back then, when we tried to support lombok: https://jira.axonivy.com/jira/browse/XIVY-1606 You may enrich that existing issue with your use case + demo project for mapstruct and I can verify if we could support your scenario.

Theoretically the JDT compiler that is used by the project-build-plugin supports annotation processing. So it should be a simple improvement to support it. But yet there is no interface for project-build-plugin users:

Just for fun. Here is the list of possible compiler flags. The -processor flag seems relevant in this case...

Eclipse Compiler for Java(TM) v20150120-1634, 3.10.2
Copyright IBM Corp 2000, 2013. All rights reserved.

 Usage: <options> <source files | directories>
 If directories are specified, then their source contents are compiled.
 Possible options are listed below. Options enabled by default are prefixed
 with '+'.

 Classpath options:
    -cp -classpath <directories and ZIP archives separated by :>
                       specify location for application classes and sources.
                       Each directory or file can specify access rules for
                       types between '[' and ']' (e.g. [-X] to forbid
                       access to type X, [~X] to discourage access to type X,
                       [+p/X:-p/*] to forbid access to all types in package p
                       but allow access to p/X)
    -bootclasspath <directories and ZIP archives separated by :>
                       specify location for system classes. Each directory or
                       file can specify access rules for types between '['
                       and ']'
    -sourcepath <directories and ZIP archives separated by :>
                       specify location for application sources. Each directory
                       or file can specify access rules for types between '['
                       and ']'. Each directory can further specify a specific
                       destination directory using a '-d' option between '['
                       and ']'; this overrides the general '-d' option.
                       .class files created from source files contained in a
                       jar file are put in the user.dir folder in case no
                       general '-d' option is specified. ZIP archives cannot
                       override the general '-d' option
    -extdirs <directories separated by :>
                       specify location for extension ZIP archives
    -endorseddirs <directories separated by :>
                       specify location for endorsed ZIP archives
    -d <dir>           destination directory (if omitted, no directory is
                       created); this option can be overridden per source
    -d none            generate no .class files
    -encoding <enc>    specify default encoding for all source files. Each
                       file/directory can override it when suffixed with
                       '['<enc>']' (e.g. X.java[utf8]).
                       If multiple default encodings are specified, the last
                       one will be used.

 Compliance options:
    -1.3               use 1.3 compliance (-source 1.3 -target 1.1)
    -1.4             + use 1.4 compliance (-source 1.3 -target 1.2)
    -1.5 -5 -5.0       use 1.5 compliance (-source 1.5 -target 1.5)
    -1.6 -6 -6.0       use 1.6 compliance (-source 1.6 -target 1.6)
    -1.7 -7 -7.0       use 1.7 compliance (-source 1.7 -target 1.7)
    -1.8 -8 -8.0       use 1.8 compliance (-source 1.8 -target 1.8)
    -source <version>  set source level: 1.3 to 1.8 (or 5, 5.0, etc)
    -target <version>  set classfile target: 1.1 to 1.8 (or 5, 5.0, etc)
                       cldc1.1 can also be used to generate the StackMap

 Warning options:
    -deprecation     + deprecation outside deprecated code (equivalent to
    -nowarn -warn:none disable all warnings
    -nowarn:[<directories separated by :>]
                       specify directories from which optional problems should
                       be ignored
    -?:warn -help:warn display advanced warning options

 Error options:
    -err:<warnings separated by ,>    convert exactly the listed warnings
                                      to be reported as errors
    -err:+<warnings separated by ,>   enable additional warnings to be
                                      reported as errors
    -err:-<warnings separated by ,>   disable specific warnings to be
                                      reported as errors

 Setting warning or error options using properties file:
    -properties <file>   set warnings/errors option based on the properties
                          file contents. This option can be used with -nowarn,
                          -err:.. or -warn:.. options, but the last one on the
                          command line sets the options to be used.

 Debug options:
    -g[:lines,vars,source] custom debug info
    -g:lines,source  + both lines table and source debug info
    -g                 all debug info
    -g:none            no debug info
    -preserveAllLocals preserve unused local vars for debug purpose

 Annotation processing options:
   These options are meaningful only in a 1.6 environment.
    -Akey[=value]        options that are passed to annotation processors
    -processorpath <directories and ZIP archives separated by :>
                         specify locations where to find annotation processors.
                         If this option is not used, the classpath will be
                         searched for processors
    -processor <class1[,class2,...]>
                         qualified names of the annotation processors to run.
                         This bypasses the default annotation discovery process
    -proc:only           run annotation processors, but do not compile
    -proc:none           perform compilation but do not run annotation
    -s <dir>             destination directory for generated source files
    -XprintProcessorInfo print information about which annotations and elements
                         a processor is asked to process
    -XprintRounds        print information about annotation processing rounds
    -classNames <className1[,className2,...]>
                         qualified names of binary classes to process

 Advanced options:
    @<file>            read command line arguments from file
    -maxProblems <n>   max number of problems per compilation unit (100 by
    -log <file>        log to a file. If the file extension is '.xml', then
                       the log will be a xml file.
                       do not stop at first error, dumping class files with
                       problem methods
                       With ":Fatal", all optional errors are treated as fatal
    -verbose           enable verbose output
    -referenceInfo     compute reference info
    -progress          show progress (only in -log mode)
    -time              display speed information 
    -noExit            do not call System.exit(n) at end of compilation (n==0
                       if no error)
    -repeat <n>        repeat compilation process <n> times for perf analysis
    -inlineJSR         inline JSR bytecode (implicit if target >= 1.5)
    -enableJavadoc     consider references in javadoc
    -parameters        generate method parameters attribute (for target >= 1.8)
    -genericsignature  generate generic signature for lambda expressions
    -Xemacs            used to enable emacs-style output in the console.
                       It does not affect the xml log output
    -missingNullDefault  report missing default nullness annotation

    -? -help           print this help message
    -v -version        print compiler version
    -showversion       print compiler version and continue

 Ignored options:
    -J<option>         pass option to virtual machine (ignored)
    -X<option>         specify non-standard option (ignored
                       except for listed -X options)
    -X                 print non-standard options and exit (ignored)
    -O                 optimize for execution time (ignored)

answered 23.03.2018 at 04:59

Reguel%20Wermelinger's gravatar image

Reguel Werme... ♦♦
accept rate: 71%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here



Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "Title")
  • image?![alt text](/path/img.jpg "Title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported



Asked: 23.03.2018 at 01:00

Seen: 414 times

Last updated: 23.03.2018 at 04:59

Related questions