[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] Target folder outside project's folder -> JUnit does not work

Thanks Igor

I will happily receive pointer to implement a java project configurator.
Cheers
Lucas
22 aug 2013 kl. 16:10 skrev Igor Fedorenko <igor@xxxxxxxxxxxxxx>:

> It is not possible to configure m2e to do what you want and generally
> m2e only supports projects that are fully contained under their base
> directory. You should be able to implement alternative java project
> configurator that will configure classpath like you need. I can provide
> pointers on m2e-dev if you want to try.
> 
> --
> Regards,
> Igor
> 
> On 2013-08-22 9:20 AM, Lucas Persson wrote:
>> Hi
>> 
>> I have defined that the target folder (and target/classes) shall be outside the project's folder.
>> The reason to have it like this is that I am using a proprietary SCM which do not allow write access unless a file is checkout out.
>> And als it does not have any type of "ignore" filter.
>> 
>> The thing is that every time I do "Maven->Update Project..." it fails like this:
>> 
>> An internal error occurred during: "Updating Maven Project".
>> Path must include project and resource name: /tiget-api
>> 
>> java.lang.IllegalArgumentException: Path must include project and resource name: /tiget-api
>> 	at org.eclipse.core.runtime.Assert.isLegal(Assert.java:63)
>> 	at org.eclipse.core.internal.resources.Workspace.newResource(Workspace.java:2163)
>> 	at org.eclipse.core.internal.resources.Container.getFolder(Container.java:222)
>> 	at org.eclipse.m2e.core.project.configurator.AbstractLifecycleMapping.configure(AbstractLifecycleMapping.java:71)
>> 
>> 
>> 
>> I am not sure what m2e does here but I guess it is updating the output folder (among other things)
>> 
>> It seems that if I do not use target folders outside the project's folder the "Maven->Update Project..." succeeds.
>> 
>> The real only issue I can see after that "Maven->Update Project..." fails is that when I try to run JUnit then the Junit launch classpath is not including the target/classes and target/test-classes folders. So JUnit will always end up in class not found for the test class.
>> 
>> 
>> So in the root pom(parent pom) I have something like this:	
>> 
>> 
>>   <properties>
>>     <rootTargetDirectory>${env.M2_TARGET}</rootTargetDirectory>
>>     <targetDirectory>${rootTargetDirectory}/${project.groupId}/${project.artifactId}/target</targetDirectory>
>> ....
>> 
>>   <build>
>>     <sourceDirectory>${basedir}/src/main/java</sourceDirectory>
>>     <testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
>>     <directory>${targetDirectory}</directory>
>>     <outputDirectory>${targetDirectory}/classes</outputDirectory>
>>     <testOutputDirectory>${targetDirectory}/test-classes</testOutputDirectory>
>> ....
>> 
>> 
>> And in order to make sure the both Eclipse and Maven compiles to same output folder I have it like this in .classpath and .project
>> 
>> <classpath>
>>   <classpathentry kind="src" path="src/main/java"/>
>>   <classpathentry kind="src" path="src/test/java" output="target/test-classes"/>
>>   <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
>>   <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
>>   <classpathentry kind="output" path="target/classes"/>
>> </classpath>
>> 
>> <?xml version="1.0" encoding="UTF-8"?>
>> <projectDescription>
>> 	<name>tiget-api</name>
>> 	<comment></comment>
>> 	<projects>
>> 	</projects>
>> 	<buildSpec>
>> 		<buildCommand>
>> 			<name>org.eclipse.jdt.core.javabuilder</name>
>> 			<arguments>
>> 			</arguments>
>> 		</buildCommand>
>> 		<buildCommand>
>> 			<name>org.eclipse.m2e.core.maven2Builder</name>
>> 			<arguments>
>> 			</arguments>
>> 		</buildCommand>
>> 	</buildSpec>
>> 	<natures>
>> 		<nature>org.eclipse.jdt.core.javanature</nature>
>> 		<nature>org.eclipse.m2e.core.maven2Nature</nature>
>> 	</natures>
>> 	<linkedResources>
>> 		<link>
>> 			<name>target</name>
>> 			<type>2</type>
>> 			<locationURI>M2_TARGET/tiget.core/tiget-api/target</locationURI>
>> 		</link>
>> 	</linkedResources>
>> </projectDescription>
>> 
>> And M2_TARGET is a Eclipse "Linke resource" path variable which all developers in my team needs to defined in their workspace.
>> 
>> So this works very well until we started to use m2e plugin for dependency management.
>> 
>> 
>> 
>> So basically is there some way to configure m2e to for instance not updating the output folder?
>> Or can I make some sort of extension to m2e to fix this?
>> 
>> 
>> 
>> I am using m2e plugin of 1.4 in Eclipse Indigo
>> 
>> 
>> Thanks
>> Lucas
>> _______________________________________________
>> m2e-users mailing list
>> m2e-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/m2e-users
>> 
> _______________________________________________
> m2e-users mailing list
> m2e-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/m2e-users