Re: handling obfuscated jars

2007-01-19 Thread Stephane Nicoll

I think that's a bug - the properties aren't overwritten.


Mmm all right.




Try this:
add another profile with true,
and move the  inside that profile.
If you don't activate the profile, that default profile should be enabled.
If you activate the obfuscation profile, then the default profile
shouldn't be activated.


I don't follow but I'll try monday and I'll let you know.




> BTW, will maven resolve the property (${obfuscated}) when the POM is
> released?

Sure it will resolve it. What you could do is name the profile different,
there's a special profile for releases (maybe it's called 'release', not sure),
so it'll be automatically enabled when releasing (that's what you're after, 
right?)


> If so, this solution is kinda useless right?

I'm not following...


What I was afraid is that the released pom did not contain the
${obfuscated} string but the resolved classifier (that is the empty
string or the obfuscated string) but I think it will work properly.

I'll try your suggestion and I'll let you know. Regarding the
properties overwriting, do you want me to open an issue in Jira?

Thanks,

Stéphane



-- Kenney

> Regards,
>
> Stéphane
>
>
>>
>> HTH,
>>
>> -- Kenney
>>
>>
>> Stephane Nicoll wrote:
>> > Hi,
>> >
>> > I already discussed this with brett and Dan and I would like to see if
>> > anyone here has more insight about how to handle obfuscated jars.
>> >
>> > The basic use case I have is to be able to specify whether I want the
>> > standard jars or the obfuscated jars for a particular project.
>> > Obfuscated jars are handled as attached artifacts w/ the "obfuscated"
>> > classifier.
>> >
>> > If a particular project does not rely on any other lib that needs to
>> > be obfuscated, everything is ok, we just depend on it with the
>> > obfuscated classifier. The harder part is when a particular project
>> > depends on other components that need to be obfuscated. In dev phase
>> > it might be easier to use non obfuscated jars (as stacktraces are a
>> > bit complex to read when something goes wrong :)
>> >
>> > Let's say we have 3 components A, B, C. A depends on B and B depends
>> > on C. I would like to find a way to specify "bring me everything
>> > obfuscated" for A  (something like intelligent classifier).
>> >
>> > Is there anything we can do about this? The other solution is to have
>> > a separate project for each component with the obfuscated dep, which
>> > sounds not good at all.
>> >
>> > Thanks,
>> > Stéphane
>> >
>> > -
>> > To unsubscribe, e-mail: [EMAIL PROTECTED]
>> > For additional commands, e-mail: [EMAIL PROTECTED]
>> >
>>
>>
>> -
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: handling obfuscated jars

2007-01-19 Thread Kenney Westerhof



Stephane Nicoll wrote:

Hi,

On 1/13/07, Kenney Westerhof <[EMAIL PROTECTED]> wrote:
The last solution i can think of is to specify 
${obfuscate}

on all deps (in project A and B ) that can have an obfuscated attachment.
You could use a profile or -Dobfuscate=obfuscated. You just have to 
make sure
that not specifying to obfuscate will set the obfuscate property to 
the empty string,
and that maven can handle empty classifier strings (like it does null 
classifiers).


Yeah it's running fine but I am facing a very annoying problem and I'd
like to know if there is a workaround.

Here is a snippet used to handle the obfuscated thingy:


 com.foo
 bar
 5.8.2-SNAPSHOT
 ${obfuscated}



   


   
   
   obfuscation
   
   
   obfuscated
   obfuscated
   
   
   
   obfuscated
   
   
   

This is running fine if I do mvn -Dobfuscated=obfuscated. However,
activating the profile, that is mvn -Pobfuscated does not have the
expected behavior. I assume that the properties are resolved "too
late" to alter the dependencies. Is there a workaround to this?


I think that's a bug - the properties aren't overwritten.

Try this:
add another profile with true,
and move the  inside that profile.
If you don't activate the profile, that default profile should be enabled.
If you activate the obfuscation profile, then the default profile
shouldn't be activated.


BTW, will maven resolve the property (${obfuscated}) when the POM is
released? 


Sure it will resolve it. What you could do is name the profile different,
there's a special profile for releases (maybe it's called 'release', not sure),
so it'll be automatically enabled when releasing (that's what you're after, 
right?)



If so, this solution is kinda useless right?


I'm not following...

-- Kenney


Regards,

Stéphane




HTH,

-- Kenney


Stephane Nicoll wrote:
> Hi,
>
> I already discussed this with brett and Dan and I would like to see if
> anyone here has more insight about how to handle obfuscated jars.
>
> The basic use case I have is to be able to specify whether I want the
> standard jars or the obfuscated jars for a particular project.
> Obfuscated jars are handled as attached artifacts w/ the "obfuscated"
> classifier.
>
> If a particular project does not rely on any other lib that needs to
> be obfuscated, everything is ok, we just depend on it with the
> obfuscated classifier. The harder part is when a particular project
> depends on other components that need to be obfuscated. In dev phase
> it might be easier to use non obfuscated jars (as stacktraces are a
> bit complex to read when something goes wrong :)
>
> Let's say we have 3 components A, B, C. A depends on B and B depends
> on C. I would like to find a way to specify "bring me everything
> obfuscated" for A  (something like intelligent classifier).
>
> Is there anything we can do about this? The other solution is to have
> a separate project for each component with the obfuscated dep, which
> sounds not good at all.
>
> Thanks,
> Stéphane
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: handling obfuscated jars

2007-01-19 Thread Stephane Nicoll

Hi,

On 1/13/07, Kenney Westerhof <[EMAIL PROTECTED]> wrote:

The last solution i can think of is to specify 
${obfuscate}
on all deps (in project A and B ) that can have an obfuscated attachment.
You could use a profile or -Dobfuscate=obfuscated. You just have to make sure
that not specifying to obfuscate will set the obfuscate property to the empty 
string,
and that maven can handle empty classifier strings (like it does null 
classifiers).


Yeah it's running fine but I am facing a very annoying problem and I'd
like to know if there is a workaround.

Here is a snippet used to handle the obfuscated thingy:


 com.foo
 bar
 5.8.2-SNAPSHOT
 ${obfuscated}



   


   
   
   obfuscation
   
   
   obfuscated
   obfuscated
   
   
   
   obfuscated
   
   
   

This is running fine if I do mvn -Dobfuscated=obfuscated. However,
activating the profile, that is mvn -Pobfuscated does not have the
expected behavior. I assume that the properties are resolved "too
late" to alter the dependencies. Is there a workaround to this?

BTW, will maven resolve the property (${obfuscated}) when the POM is
released? If so, this solution is kinda useless right?

Regards,

Stéphane




HTH,

-- Kenney


Stephane Nicoll wrote:
> Hi,
>
> I already discussed this with brett and Dan and I would like to see if
> anyone here has more insight about how to handle obfuscated jars.
>
> The basic use case I have is to be able to specify whether I want the
> standard jars or the obfuscated jars for a particular project.
> Obfuscated jars are handled as attached artifacts w/ the "obfuscated"
> classifier.
>
> If a particular project does not rely on any other lib that needs to
> be obfuscated, everything is ok, we just depend on it with the
> obfuscated classifier. The harder part is when a particular project
> depends on other components that need to be obfuscated. In dev phase
> it might be easier to use non obfuscated jars (as stacktraces are a
> bit complex to read when something goes wrong :)
>
> Let's say we have 3 components A, B, C. A depends on B and B depends
> on C. I would like to find a way to specify "bring me everything
> obfuscated" for A  (something like intelligent classifier).
>
> Is there anything we can do about this? The other solution is to have
> a separate project for each component with the obfuscated dep, which
> sounds not good at all.
>
> Thanks,
> Stéphane
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: handling obfuscated jars

2007-01-13 Thread Stephane Nicoll

On 1/13/07, Kenney Westerhof <[EMAIL PROTECTED]> wrote:


Obfuscated jars are usually only needed for binary distributions (assemblies).
A simple solution would be to have a distribution assembly project that directly
depends on all obfuscated jars.


Yeah that's one idea and I actually like it. The only problem is that
one of my use case is to use some components in a training session and
I need to be able to say at some point "Use components A and get it
obfuscated as well as its dependent components". Since  the training
sessions cover almost everything, It would be better to be able to
handle that on a per-component basis.

The problem also I have with this is that if I get project A with the
obfuscated classifier (and B and C directly like you said) I'll still
get the transitive deps on A and B which are not obfuscated according
to the POM. And I can't disable transitive deps since it needs third
party libs



Second solution is to obfuscate the jars in the assembly. This has the advantage
that the obfuscator can obfuscate more since less public api's have to be
exposed in order to have inter-jar operability.


Same as above.



The last solution i can think of is to specify 
${obfuscate}
on all deps (in project A and B ) that can have an obfuscated attachment.
You could use a profile or -Dobfuscate=obfuscated. You just have to make sure
that not specifying to obfuscate will set the obfuscate property to the empty 
string,
and that maven can handle empty classifier strings (like it does null 
classifiers).


I thought about this solution very quickly and I was wondering if it
was possible. Mmmm, let's have a try then. I had a hard time with
profiles so far (the help:active-profiles might be broken by the way,
I'll try to confirm that).



HTH,


Of course it does. Thanks a lot for your input.

Stéphane




-- Kenney


Stephane Nicoll wrote:
> Hi,
>
> I already discussed this with brett and Dan and I would like to see if
> anyone here has more insight about how to handle obfuscated jars.
>
> The basic use case I have is to be able to specify whether I want the
> standard jars or the obfuscated jars for a particular project.
> Obfuscated jars are handled as attached artifacts w/ the "obfuscated"
> classifier.
>
> If a particular project does not rely on any other lib that needs to
> be obfuscated, everything is ok, we just depend on it with the
> obfuscated classifier. The harder part is when a particular project
> depends on other components that need to be obfuscated. In dev phase
> it might be easier to use non obfuscated jars (as stacktraces are a
> bit complex to read when something goes wrong :)
>
> Let's say we have 3 components A, B, C. A depends on B and B depends
> on C. I would like to find a way to specify "bring me everything
> obfuscated" for A  (something like intelligent classifier).
>
> Is there anything we can do about this? The other solution is to have
> a separate project for each component with the obfuscated dep, which
> sounds not good at all.
>
> Thanks,
> Stéphane
>
> -
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: handling obfuscated jars

2007-01-13 Thread Kenney Westerhof

Hi,

I don't know what your usecases are, but here are some ideas:

Obfuscated jars are usually only needed for binary distributions (assemblies).
A simple solution would be to have a distribution assembly project that directly
depends on all obfuscated jars.

Second solution is to obfuscate the jars in the assembly. This has the advantage
that the obfuscator can obfuscate more since less public api's have to be
exposed in order to have inter-jar operability.

The last solution i can think of is to specify 
${obfuscate}
on all deps (in project A and B ) that can have an obfuscated attachment.
You could use a profile or -Dobfuscate=obfuscated. You just have to make sure
that not specifying to obfuscate will set the obfuscate property to the empty 
string,
and that maven can handle empty classifier strings (like it does null 
classifiers).

HTH,

-- Kenney


Stephane Nicoll wrote:

Hi,

I already discussed this with brett and Dan and I would like to see if
anyone here has more insight about how to handle obfuscated jars.

The basic use case I have is to be able to specify whether I want the
standard jars or the obfuscated jars for a particular project.
Obfuscated jars are handled as attached artifacts w/ the "obfuscated"
classifier.

If a particular project does not rely on any other lib that needs to
be obfuscated, everything is ok, we just depend on it with the
obfuscated classifier. The harder part is when a particular project
depends on other components that need to be obfuscated. In dev phase
it might be easier to use non obfuscated jars (as stacktraces are a
bit complex to read when something goes wrong :)

Let's say we have 3 components A, B, C. A depends on B and B depends
on C. I would like to find a way to specify "bring me everything
obfuscated" for A  (something like intelligent classifier).

Is there anything we can do about this? The other solution is to have
a separate project for each component with the obfuscated dep, which
sounds not good at all.

Thanks,
Stéphane

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]