Yes I know its more common to start with java source files but in this case
that is not possible unless someone knows how to generate sources from a
javassist generated CtClass.  If I could do that then yes I could just add
the sources instead of the class.

Here is the best I have so far and sort of works.  Since my class generator
writes to the target/classes folder I told the exec-maven-plugin that and
now it is part of the build as other modules can use the generated class
but its not a great solution as my IDE does not know about the class so it
shows errors.  So apparently IntelliJ's Maven support does not extend this
sort of exec-maven-plugin configuration.  I need to find a better way to do
this so IDE is happy as well.

Here is the relevant part of my pom.

<plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.6.0</version>
        <executions>
            <execution>
                <id>code-generator</id>
                <phase>compile</phase>
                <goals>
                    <goal>java</goal>
                </goals>
                <configuration>

<mainClass>com.issinc.odin.display.metadata.generator.UiDisplayMetadataGenerator</mainClass>

<includeProjectDependencies>true</includeProjectDependencies>
                    <addOutputToClasspath>true</addOutputToClasspath>

<outputDirectory>${project.build.directory}/classes</outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

-Dave



On Thu, Apr 6, 2017 at 10:34 AM, Curtis Rueden <ctrue...@wisc.edu> wrote:

> Hi Dave,
>
> > I'm using exec-maven-plugin to call a main in my code that uses
> > javassist to generate a class file at build time.
>
> The more common pattern is to generate .java source files, and then include
> them in the build.
>
> Since you are generating .class file(s), could you do it in a separate
> module of a multi-module build, then add that module as a dependency to
> your main project module?
>
> Could you post an MCVE, particularly your POM, which shows your current
> approach?
>
> Regards,
> Curtis
>
> --
> Curtis Rueden
> LOCI software architect - https://loci.wisc.edu/software
> ImageJ2 lead, Fiji maintainer - https://imagej.net/User:Rueden
>
>
> On Thu, Apr 6, 2017 at 10:48 AM, David Hoffer <dhoff...@gmail.com> wrote:
>
> > I'm using exec-maven-plugin to call a main in my code that uses javassist
> > to generate a class file at build time.  My code places the class file in
> > the ./target/classes folder so it gets included in the modules normal
> > binary jar.
> >
> > However the rest of the build and other code needs to know that the class
> > exists.  I've added that module/artifact as a dependency but the build
> and
> > the runtime classpath has no idea that class exists.
> >
> > How do I add it to the build and runtime classpath?
> >
> > -Dave
> >
>

Reply via email to