IntelliJ does indeed understand project structure.  In fact, multiple
source roots in IntelliJ are trivial.

Blake

On Fri, Sep 19, 2025 at 4:14 AM Maciej Jaros <[email protected]>
wrote:

> I used InteliJ and I didn't like that it doesn't really understand project
> structure and especially profiles. NB works with maven to figure out
> dependencies and you can use profiles to share build groups with other devs.
>
> For example here you have a full build and a utils build that can be built
> separately (not always great, but it works good enough in NB):
>
> <?xml version="1.0" encoding="UTF-8"?>
> <project xmlns="http://maven.apache.org/POM/4.0.0";
> <http://maven.apache.org/POM/4.0.0>
>          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> <http://www.w3.org/2001/XMLSchema-instance>
>          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> https://maven.apache.org/xsd/maven-4.0.0.xsd";
> <http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/maven-4.0.0.xsd>
> >
>
>     <modelVersion>4.0.0</modelVersion>
>     <groupId>pl.myproject</groupId>
>     <artifactId>myproject</artifactId>
>     <version>1.0-SNAPSHOT</version>
>     <packaging>pom</packaging>
>     <name>myproject</name>
>
>     <modules>
>         <module>myproject-core</module>
>         <module>myproject-saas</module>
>         <module>myproject-utils</module>
>         <module>myproject-dwh</module>
>         <module>myproject-lms-client</module>
>         <module>myproject-extapp</module>
>         <module>myproject-opac</module>
>     </modules>
>
>     <profiles>
>         <!-- default -->
>         <profile>
>             <id>full</id>
>             <activation>
>                 <activeByDefault>true</activeByDefault>
>             </activation>
>             <modules>
>                 <module>myproject-core</module>
>                 <module>myproject-saas</module>
>                 <module>myproject-lms-client</module>
>                 <module>myproject-extapp</module>
>                 <module>myproject-aash</module>
>                 <module>myproject-utils</module>
>                 <module>myproject-dwh</module>
>                 <module>myproject-opac</module>
>             </modules>
>         </profile>
>
>         <!-- UTILS -->
>         <profile>
>             <id>utils-build-only</id>
>             <properties>
>                 <skip.integration.tests>true</skip.integration.tests>
>                 <skip.unit.tests>true</skip.unit.tests>
>             </properties>
>             <modules>
>                 <module>myproject-saas</module>
>                 <module>myproject-utils</module>
>             </modules>
>         </profile>
>         <profile>
>             <id>utils-development</id>
>             <properties>
>                 <skip.integration.tests>true</skip.integration.tests>
>             </properties>
>             <modules>
>                 <module>myproject-saas</module>
>                 <module>myproject-utils</module>
>             </modules>
>         </profile>
>         <profile>
>             <id>utils-full</id>
>             <modules>
>                 <module>myproject-saas</module>
>                 <module>myproject-utils</module>
>             </modules>
>         </profile>
>     </profiles>
>
>     <build>
>         <plugins>
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-compiler-plugin</artifactId>
>                 <version>3.14.0</version>
>                 <configuration>
>                     <release>17</release>
>                     <encoding>UTF-8</encoding>
>                 </configuration>
>             </plugin>
>         </plugins>
>     </build>
>
>     <dependencies>
>         <dependency>
>             <groupId>org.apache.logging.log4j</groupId>
>             <artifactId>log4j-core</artifactId>
>             <version>2.24.3</version>
>         </dependency>
>         <dependency>
>             <groupId>org.junit.jupiter</groupId>
>             <artifactId>junit-jupiter-engine</artifactId>
>             <scope>test</scope>
>         </dependency>
>     </dependencies>
>
> </project>
>
>
>
> Blake McBride (2025-09-18 22:42):
>
> According to ChatGPT:
>
> If you have *multiple source roots*, Maven itself only supports a *single*
> <sourceDirectory> and <testSourceDirectory> in the <build> section. To
> handle *more than one*, you need to *declare one as the “main”* and then
> use the build-helper-maven-plugin to add the rest.
>
> This is one of many reasons I resorted to my own build system.
>
> (BTW, IntelliJ supports any number of source roots.)
>
> --blake
>
>

Reply via email to